LLVM: llvm::GlobalStatus Struct Reference (original) (raw)
As we analyze each global or thread-local variable, keep track of some information about it. More...
#include "[llvm/Transforms/Utils/GlobalStatus.h](GlobalStatus%5F8h%5Fsource.html)"
| Public Types | |
|---|---|
| enum | StoredType { NotStored, InitializerStored, StoredOnce, Stored } |
| Keep track of what stores to the global look like. More... |
| Public Member Functions | |
|---|---|
| Value * | getStoredOnceValue () const |
| If only one value (besides the initializer constant) is ever stored to this global return the stored value. | |
| GlobalStatus () |
| Public Attributes | |
|---|---|
| bool | IsCompared = false |
| True if the global's address is used in a comparison. | |
| bool | IsLoaded = false |
| True if the global is ever loaded. | |
| unsigned | NumStores = 0 |
| Number of stores to the global. | |
| enum llvm::GlobalStatus::StoredType | StoredType = NotStored |
| const StoreInst * | StoredOnceStore = nullptr |
| If only one value (besides the initializer constant) is ever stored to this global, keep track of what value it is via the store instruction. | |
| const Function * | AccessingFunction = nullptr |
| These start out null/false. | |
| bool | HasMultipleAccessingFunctions = false |
| AtomicOrdering | Ordering = AtomicOrdering::NotAtomic |
| Set to the strongest atomic ordering requirement. |
As we analyze each global or thread-local variable, keep track of some information about it.
If we find out that the address of the global is taken, none of this info will be accurate.
Definition at line 30 of file GlobalStatus.h.
◆ StoredType
Keep track of what stores to the global look like.
| Enumerator | |
|---|---|
| NotStored | There is no store to this global. It can thus be marked constant. |
| InitializerStored | This global is stored to, but the only thing stored is the constant it was initialized with. This is only tracked for scalar globals. |
| StoredOnce | This global is stored to, but only its initializer and one other value is ever stored to it. If this global isStoredOnce, we track the value stored to it via StoredOnceStore below. This is only tracked for scalar globals. |
| Stored | This global is stored to by multiple values or something else that we cannot track. |
Definition at line 42 of file GlobalStatus.h.
| GlobalStatus::GlobalStatus ( ) | default |
|---|
◆ analyzeGlobal()
◆ getStoredOnceValue()
| Value * llvm::GlobalStatus::getStoredOnceValue ( ) const | inline |
|---|
◆ AccessingFunction
These start out null/false.
When the first accessing function is noticed, it is recorded. When a second different accessing function is noticed, HasMultipleAccessingFunctions is set to true.
Definition at line 76 of file GlobalStatus.h.
◆ HasMultipleAccessingFunctions
bool llvm::GlobalStatus::HasMultipleAccessingFunctions = false
◆ IsCompared
bool llvm::GlobalStatus::IsCompared = false
True if the global's address is used in a comparison.
Definition at line 32 of file GlobalStatus.h.
◆ IsLoaded
bool llvm::GlobalStatus::IsLoaded = false
True if the global is ever loaded.
If the global isn't ever loaded it can be deleted.
Definition at line 36 of file GlobalStatus.h.
◆ NumStores
unsigned llvm::GlobalStatus::NumStores = 0
◆ Ordering
Set to the strongest atomic ordering requirement.
Definition at line 80 of file GlobalStatus.h.
◆ StoredOnceStore
If only one value (besides the initializer constant) is ever stored to this global, keep track of what value it is via the store instruction.
Definition at line 63 of file GlobalStatus.h.
Referenced by getStoredOnceValue().
◆ StoredType
The documentation for this struct was generated from the following files:
- include/llvm/Transforms/Utils/GlobalStatus.h
- lib/Transforms/Utils/GlobalStatus.cpp