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
Methods
¶bool Merge(const llvm::objcarc::RRInfo& Other)
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()
RRInfo()
Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:90
¶void clear()
void clear()
Declared at: llvm/lib/Transforms/ObjCARC/PtrState.h:92