18 #ifndef LLVM_CLANG_CODEGEN_CONSTANTINITFUTURE_H 19 #define LLVM_CLANG_CODEGEN_CONSTANTINITFUTURE_H 21 #include "llvm/ADT/PointerUnion.h" 22 #include "llvm/IR/Constant.h" 29 class ConstantInitBuilderBase;
39 enum { NumLowBitsAvailable = 2 };
49 using PairTy = llvm::PointerUnion<ConstantInitBuilderBase*, llvm::Constant*>;
61 assert(initializer &&
"creating null future");
65 explicit operator bool()
const {
return bool(Data); }
75 void installInGlobal(llvm::GlobalVariable *global);
80 result.Data = PairTy::getFromOpaqueValue(value);
102 return T::getFromOpaqueValue(p);
104 enum { NumLowBitsAvailable = T::NumLowBitsAvailable };
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
static void * getAsVoidPointer(T future)
static void * getAsVoidPointer(T p)
The l-value was considered opaque, so the alignment was determined from a type.
ConstantInitFuture(llvm::Constant *initializer)
A future can be explicitly created from a fixed initializer.
A "future" for a completed constant initializer, which can be passed around independently of any sub-...
void * getOpaqueValue() const
Dataflow Directional Tag Classes.
static T getFromVoidPointer(void *p)
static ConstantInitFuture getFromOpaqueValue(void *value)
static T getFromVoidPointer(void *p)