LLVM API Documentation

Public Types | Public Member Functions | Static Public Member Functions | Friends
llvm::GlobalVariable Class Reference

#include <GlobalVariable.h>

Inheritance diagram for llvm::GlobalVariable:
Inheritance graph
[legend]
Collaboration diagram for llvm::GlobalVariable:
Collaboration graph
[legend]

List of all members.

Public Types

enum  ThreadLocalMode {
  NotThreadLocal = 0, GeneralDynamicTLSModel, LocalDynamicTLSModel, InitialExecTLSModel,
  LocalExecTLSModel
}

Public Member Functions

void * operator new (size_t s)
 GlobalVariable (Type *Ty, bool isConstant, LinkageTypes Linkage, Constant *Initializer=0, const Twine &Name="", ThreadLocalMode=NotThreadLocal, unsigned AddressSpace=0, bool isExternallyInitialized=false)
 GlobalVariable (Module &M, Type *Ty, bool isConstant, LinkageTypes Linkage, Constant *Initializer, const Twine &Name="", GlobalVariable *InsertBefore=0, ThreadLocalMode=NotThreadLocal, unsigned AddressSpace=0, bool isExternallyInitialized=false)
 ~GlobalVariable ()
 DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value)
 Provide fast operand accessors.
bool hasInitializer () const
bool hasDefinitiveInitializer () const
bool hasUniqueInitializer () const
const ConstantgetInitializer () const
ConstantgetInitializer ()
void setInitializer (Constant *InitVal)
bool isConstant () const
void setConstant (bool Val)
bool isThreadLocal () const
 If the value is "Thread Local", its value isn't shared by the threads.
void setThreadLocal (bool Val)
void setThreadLocalMode (ThreadLocalMode Val)
ThreadLocalMode getThreadLocalMode () const
bool isExternallyInitialized () const
void setExternallyInitialized (bool Val)
void copyAttributesFrom (const GlobalValue *Src)
virtual void removeFromParent ()
virtual void eraseFromParent ()
virtual void replaceUsesOfWithOnConstant (Value *From, Value *To, Use *U)

Static Public Member Functions

static bool classof (const Value *V)

Friends

class SymbolTableListTraits< GlobalVariable, Module >

Detailed Description

Definition at line 35 of file GlobalVariable.h.


Member Enumeration Documentation

Enumerator:
NotThreadLocal 
GeneralDynamicTLSModel 
LocalDynamicTLSModel 
InitialExecTLSModel 
LocalExecTLSModel 

Definition at line 58 of file GlobalVariable.h.


Constructor & Destructor Documentation

GlobalVariable::GlobalVariable ( Type Ty,
bool  isConstant,
LinkageTypes  Linkage,
Constant Initializer = 0,
const Twine Name = "",
ThreadLocalMode  TLMode = NotThreadLocal,
unsigned  AddressSpace = 0,
bool  isExternallyInitialized = false 
)

GlobalVariable ctor - If a parent module is specified, the global is automatically inserted into the end of the specified modules global list.

Definition at line 84 of file Globals.cpp.

References llvm::LeakDetector::addGarbageObject(), and llvm::Value::getType().

GlobalVariable::GlobalVariable ( Module M,
Type Ty,
bool  isConstant,
LinkageTypes  Linkage,
Constant Initializer,
const Twine Name = "",
GlobalVariable InsertBefore = 0,
ThreadLocalMode  TLMode = NotThreadLocal,
unsigned  AddressSpace = 0,
bool  isExternallyInitialized = false 
)

GlobalVariable ctor - This creates a global and inserts it before the specified other global.

Definition at line 104 of file Globals.cpp.

References llvm::LeakDetector::addGarbageObject(), llvm::Module::getGlobalList(), llvm::GlobalValue::getParent(), and llvm::Value::getType().

llvm::GlobalVariable::~GlobalVariable ( ) [inline]

Definition at line 80 of file GlobalVariable.h.

References llvm::User::NumOperands.


Member Function Documentation

static bool llvm::GlobalVariable::classof ( const Value V) [inline, static]

Reimplemented from llvm::GlobalValue.

Definition at line 196 of file GlobalVariable.h.

References llvm::Value::getValueID(), and llvm::Value::GlobalVariableVal.

void GlobalVariable::copyAttributesFrom ( const GlobalValue Src) [virtual]

copyAttributesFrom - copy all additional attributes (those not needed to create a GlobalVariable) from the GlobalVariable Src to this one.

Reimplemented from llvm::GlobalValue.

Definition at line 183 of file Globals.cpp.

References isThreadLocal(), and setThreadLocal().

Referenced by llvm::CloneModule(), and INITIALIZE_PASS().

llvm::GlobalVariable::DECLARE_TRANSPARENT_OPERAND_ACCESSORS ( Value  )

Provide fast operand accessors.

void GlobalVariable::eraseFromParent ( ) [virtual]

eraseFromParent - This method unlinks 'this' from the containing module and deletes it.

Implements llvm::GlobalValue.

Definition at line 142 of file Globals.cpp.

References llvm::Module::getGlobalList(), and llvm::GlobalValue::getParent().

Referenced by INITIALIZE_PASS(), InstallGlobalCtors(), OptimizeAwayTrappingUsesOfLoads(), OptimizeGlobalAddressOfMalloc(), PerformHeapAllocSRoA(), and TryToShrinkGlobalToBoolean().

const Constant* llvm::GlobalVariable::getInitializer ( ) const [inline]
Constant* llvm::GlobalVariable::getInitializer ( ) [inline]

Definition at line 144 of file GlobalVariable.h.

References hasInitializer().

ThreadLocalMode llvm::GlobalVariable::getThreadLocalMode ( ) const [inline]
bool llvm::GlobalVariable::hasDefinitiveInitializer ( ) const [inline]

hasDefinitiveInitializer - Whether the global variable has an initializer, and any other instances of the global (this can happen due to weak linkage) are guaranteed to have the same initializer.

Note that if you want to transform a global, you must use hasUniqueInitializer() instead, because of the *_odr linkage type.

Example:

= global SomeType* null - Initializer is both definitive and unique.

= global weak SomeType* null - Initializer is neither definitive nor unique.

= global weak_odr SomeType* null - Initializer is definitive, but not unique.

Definition at line 109 of file GlobalVariable.h.

References hasInitializer(), isExternallyInitialized(), and llvm::GlobalValue::mayBeOverridden().

Referenced by FoldReinterpretLoadFromConstPtr(), llvm::getConstantStringInfo(), and llvm::ObjectSizeOffsetVisitor::visitGlobalVariable().

bool llvm::GlobalVariable::hasInitializer ( ) const [inline]

hasInitializer - Unless a global variable isExternal(), it has an initializer. The initializer for the global variable/constant is held by Initializer if an initializer is specified.

Definition at line 91 of file GlobalVariable.h.

References llvm::GlobalValue::isDeclaration().

Referenced by llvm::MachineModuleInfo::AnalyzeModule(), CommitValueTo(), llvm::AsmPrinter::EmitGlobalVariable(), llvm::AsmPrinter::EmitSpecialLLVMGlobal(), llvm::ExtractTypeInfo(), getInitializer(), llvm::DataLayout::getPreferredAlignment(), hasDefinitiveInitializer(), hasUniqueInitializer(), INITIALIZE_PASS(), LLVMGetInitializer(), llvm::AssemblyWriter::printGlobal(), and setInitializer().

bool llvm::GlobalVariable::hasUniqueInitializer ( ) const [inline]

hasUniqueInitializer - Whether the global variable has an initializer, and any changes made to the initializer will turn up in the final executable.

Definition at line 121 of file GlobalVariable.h.

References hasInitializer(), isExternallyInitialized(), and llvm::GlobalValue::isWeakForLinker().

Referenced by isSimpleEnoughPointerToCommit().

bool llvm::GlobalVariable::isConstant ( ) const [inline]

If the value is a global constant, its value is immutable throughout the runtime execution of the program. Assigning a value into the constant leads to undefined behavior.

Definition at line 157 of file GlobalVariable.h.

Referenced by AnalyzeLoadFromClobberingMemInst(), CleanupPointerRootUsers(), FoldReinterpretLoadFromConstPtr(), llvm::getConstantStringInfo(), llvm::TargetLoweringObjectFile::getKindForGlobal(), llvm::JIT::getMemoryForGV(), INITIALIZE_PASS(), InstallGlobalCtors(), isSuitableForBSS(), llvm::AssemblyWriter::printGlobal(), and SRAGlobal().

bool llvm::GlobalVariable::isExternallyInitialized ( ) const [inline]
bool llvm::GlobalVariable::isThreadLocal ( ) const [inline]

If the value is "Thread Local", its value isn't shared by the threads.

Definition at line 161 of file GlobalVariable.h.

References NotThreadLocal.

Referenced by copyAttributesFrom(), llvm::ExecutionEngine::EmitGlobalVariable(), llvm::SelectionDAG::getGlobalAddress(), llvm::TargetLoweringObjectFile::getKindForGlobal(), and llvm::JIT::getMemoryForGV().

void* llvm::GlobalVariable::operator new ( size_t  s) [inline]

Reimplemented from llvm::User.

Definition at line 54 of file GlobalVariable.h.

References operator new().

void GlobalVariable::removeFromParent ( ) [virtual]

removeFromParent - This method unlinks 'this' from the containing module, but does not delete it.

Implements llvm::GlobalValue.

Definition at line 138 of file Globals.cpp.

References llvm::Module::getGlobalList(), and llvm::GlobalValue::getParent().

void GlobalVariable::replaceUsesOfWithOnConstant ( Value From,
Value To,
Use U 
) [virtual]

Override Constant's implementation of this method so we can replace constant initializers.

Reimplemented from llvm::Constant.

Definition at line 146 of file Globals.cpp.

References llvm::User::getNumOperands(), llvm::User::getOperand(), and llvm::User::setOperand().

void llvm::GlobalVariable::setConstant ( bool  Val) [inline]

Definition at line 158 of file GlobalVariable.h.

void llvm::GlobalVariable::setExternallyInitialized ( bool  Val) [inline]

Definition at line 173 of file GlobalVariable.h.

void GlobalVariable::setInitializer ( Constant InitVal)

setInitializer - Sets the initializer for this global variable, removing any existing initializer if InitVal==NULL. If this GV has type T*, the initializer must have type T.

Definition at line 166 of file Globals.cpp.

References llvm::SequentialType::getElementType(), llvm::Value::getType(), llvm::GlobalValue::getType(), hasInitializer(), and llvm::User::NumOperands.

Referenced by llvm::CloneModule(), CommitValueTo(), llvm::InsertProfilingShutdownCall(), and InstallGlobalCtors().

void llvm::GlobalVariable::setThreadLocal ( bool  Val) [inline]

Definition at line 162 of file GlobalVariable.h.

References GeneralDynamicTLSModel, and NotThreadLocal.

Referenced by copyAttributesFrom().

void llvm::GlobalVariable::setThreadLocalMode ( ThreadLocalMode  Val) [inline]

Definition at line 165 of file GlobalVariable.h.

Referenced by LLVMSetThreadLocalMode().


Friends And Related Function Documentation

friend class SymbolTableListTraits< GlobalVariable, Module > [friend]

Definition at line 36 of file GlobalVariable.h.


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