summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/IR/Globals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/lib/IR/Globals.cpp')
-rw-r--r--contrib/llvm/lib/IR/Globals.cpp51
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) {
OpenPOWER on IntegriCloud