diff options
Diffstat (limited to 'contrib/llvm/lib/IR/Globals.cpp')
-rw-r--r-- | contrib/llvm/lib/IR/Globals.cpp | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/contrib/llvm/lib/IR/Globals.cpp b/contrib/llvm/lib/IR/Globals.cpp index 54197d9..79a458c 100644 --- a/contrib/llvm/lib/IR/Globals.cpp +++ b/contrib/llvm/lib/IR/Globals.cpp @@ -38,12 +38,8 @@ bool GlobalValue::isDematerializable() const { std::error_code GlobalValue::materialize() { return getParent()->materialize(this); } -void GlobalValue::Dematerialize() { - getParent()->Dematerialize(this); -} - -const DataLayout *GlobalValue::getDataLayout() const { - return getParent()->getDataLayout(); +void GlobalValue::dematerialize() { + getParent()->dematerialize(this); } /// Override destroyConstant to make sure it doesn't get called on @@ -218,14 +214,20 @@ void GlobalVariable::replaceUsesOfWithOnConstant(Value *From, Value *To, void GlobalVariable::setInitializer(Constant *InitVal) { if (!InitVal) { if (hasInitializer()) { + // Note, the num operands is used to compute the offset of the operand, so + // the order here matters. Clearing the operand then clearing the num + // operands ensures we have the correct offset to the operand. Op<0>().set(nullptr); - NumOperands = 0; + setGlobalVariableNumOperands(0); } } else { assert(InitVal->getType() == getType()->getElementType() && "Initializer type must match GlobalVariable type"); + // Note, the num operands is used to compute the offset of the operand, so + // the order here matters. We need to set num operands to 1 first so that + // we get the correct offset to the first operand when we set it. if (!hasInitializer()) - NumOperands = 1; + setGlobalVariableNumOperands(1); Op<0>().set(InitVal); } } @@ -245,40 +247,35 @@ void GlobalVariable::copyAttributesFrom(const GlobalValue *Src) { // GlobalAlias Implementation //===----------------------------------------------------------------------===// -GlobalAlias::GlobalAlias(Type *Ty, unsigned AddressSpace, LinkageTypes Link, - const Twine &Name, Constant *Aliasee, - Module *ParentModule) - : GlobalValue(PointerType::get(Ty, AddressSpace), Value::GlobalAliasVal, - &Op<0>(), 1, Link, Name) { +GlobalAlias::GlobalAlias(PointerType *Ty, LinkageTypes Link, const Twine &Name, + Constant *Aliasee, Module *ParentModule) + : GlobalValue(Ty, Value::GlobalAliasVal, &Op<0>(), 1, Link, Name) { Op<0>() = Aliasee; if (ParentModule) ParentModule->getAliasList().push_back(this); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Link, const Twine &Name, - Constant *Aliasee, Module *ParentModule) { - return new GlobalAlias(Ty, AddressSpace, Link, Name, Aliasee, ParentModule); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Link, + const Twine &Name, Constant *Aliasee, + Module *ParentModule) { + return new GlobalAlias(Ty, Link, Name, Aliasee, ParentModule); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Linkage, const Twine &Name, - Module *Parent) { - return create(Ty, AddressSpace, Linkage, Name, nullptr, Parent); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Linkage, + const Twine &Name, Module *Parent) { + return create(Ty, Linkage, Name, nullptr, Parent); } -GlobalAlias *GlobalAlias::create(Type *Ty, unsigned AddressSpace, - LinkageTypes Linkage, const Twine &Name, - GlobalValue *Aliasee) { - return create(Ty, AddressSpace, Linkage, Name, Aliasee, Aliasee->getParent()); +GlobalAlias *GlobalAlias::create(PointerType *Ty, LinkageTypes Linkage, + const Twine &Name, GlobalValue *Aliasee) { + return create(Ty, Linkage, Name, Aliasee, Aliasee->getParent()); } GlobalAlias *GlobalAlias::create(LinkageTypes Link, const Twine &Name, GlobalValue *Aliasee) { PointerType *PTy = Aliasee->getType(); - return create(PTy->getElementType(), PTy->getAddressSpace(), Link, Name, - Aliasee); + return create(PTy, Link, Name, Aliasee); } GlobalAlias *GlobalAlias::create(const Twine &Name, GlobalValue *Aliasee) { |