LLVM: llvm::objcarc::RRInfo Struct Reference (original) (raw)

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

#include "[Transforms/ObjCARC/PtrState.h](PtrState%5F8h%5Fsource.html)"

Public Attributes
bool KnownSafe = false
After an objc_retain, the reference count of the referenced object is known to be positive.
bool IsTailCallRelease = false
True of the objc_release calls are all marked with the "tail" keyword.
MDNode * ReleaseMetadata = nullptr
If the Calls are objc_release calls and they all have a clang.imprecise_release tag, this is the metadata tag.
SmallPtrSet< Instruction *, 2 > Calls
For a top-down sequence, the set of objc_retains or objc_retainBlocks.
SmallPtrSet< Instruction *, 2 > ReverseInsertPts
The set of optimal insert positions for moving calls in the opposite sequence.
bool CFGHazardAfflicted = false
If this is true, we cannot perform code motion but can still remove retain/release pairs.

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

Definition at line 55 of file PtrState.h.

llvm::objcarc::RRInfo::RRInfo ( ) default

clear()

Merge()

Calls

For a top-down sequence, the set of objc_retains or objc_retainBlocks.

For bottom-up, the set of objc_releases.

Definition at line 79 of file PtrState.h.

Referenced by clear(), and Merge().

CFGHazardAfflicted

bool llvm::objcarc::RRInfo::CFGHazardAfflicted = false

If this is true, we cannot perform code motion but can still remove retain/release pairs.

Definition at line 87 of file PtrState.h.

Referenced by clear(), and Merge().

IsTailCallRelease

bool llvm::objcarc::RRInfo::IsTailCallRelease = false

True of the objc_release calls are all marked with the "tail" keyword.

Definition at line 71 of file PtrState.h.

Referenced by clear(), and Merge().

KnownSafe

bool llvm::objcarc::RRInfo::KnownSafe = false

After an objc_retain, the reference count of the referenced object is known to be positive.

Similarly, before an objc_release, the reference count of the referenced object is known to be positive. If there are retain-release pairs in code regions where the retain count is known to be positive, they can be eliminated, regardless of any side effects between them.

Also, a retain+release pair nested within another retain+release pair all on the known same pointer value can be eliminated, regardless of any intervening side effects.

KnownSafe is true when either of these conditions is satisfied.

Definition at line 68 of file PtrState.h.

Referenced by clear(), and Merge().

ReleaseMetadata

MDNode* llvm::objcarc::RRInfo::ReleaseMetadata = nullptr

If the Calls are objc_release calls and they all have a clang.imprecise_release tag, this is the metadata tag.

Definition at line 75 of file PtrState.h.

Referenced by clear(), and Merge().

ReverseInsertPts

The set of optimal insert positions for moving calls in the opposite sequence.

Definition at line 83 of file PtrState.h.

Referenced by clear(), and Merge().


The documentation for this struct was generated from the following files: