struct RRInfo

Declaration

struct RRInfo { /* full declaration omitted */ };

Description

Unidirectional information about either a retain-decrement-use-release sequence or release-use-decrement-retain reverse sequence.

Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:56

Member Variables

public bool KnownSafe = false
KnownSafe is true when either of these conditions is satisfied.
public bool IsTailCallRelease = false
True of the objc_release calls are all marked with the "tail" keyword.
public llvm::MDNode* ReleaseMetadata = nullptr
If the Calls are objc_release calls and they all have a clang.imprecise_release tag, this is the metadata tag.
public SmallPtrSet<llvm::Instruction*, 2> Calls
For a top-down sequence, the set of objc_retains or objc_retainBlocks. For bottom-up, the set of objc_releases.
public SmallPtrSet<llvm::Instruction*, 2> ReverseInsertPts
The set of optimal insert positions for moving calls in the opposite sequence.
public bool CFGHazardAfflicted = false
If this is true, we cannot perform code motion but can still remove retain/release pairs.

Method Overview

  • public bool Merge(const llvm::objcarc::RRInfo & Other)
  • public RRInfo()
  • public void clear()

Methods

bool Merge(const llvm::objcarc::RRInfo& Other)

Description

Conservatively merge the two RRInfo. Returns true if a partial merge has occurred, false otherwise.

Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:96

Parameters

const llvm::objcarc::RRInfo& Other

RRInfo()

Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:90

void clear()

Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:92