aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2009-07-08 19:03:57 +0000
committerOwen Anderson <resistor@mac.com>2009-07-08 19:03:57 +0000
commite9b11b431308f4766b73cda93e38ec930c912122 (patch)
treed72fc321dc0c445f8880443050c0a03c2ccdf7d2
parent515cdbe49d9bb5cd05be2713faaa7e2a66ddc3bc (diff)
Switch GlobalVariable ctors to a sane API, where *either* a context or a module is required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75025 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--examples/BrainF/BrainF.cpp5
-rw-r--r--include/llvm/GlobalVariable.h17
-rw-r--r--include/llvm/Support/IRBuilder.h43
-rw-r--r--lib/Analysis/DebugInfo.cpp48
-rw-r--r--lib/AsmParser/LLParser.cpp13
-rw-r--r--lib/Bitcode/Reader/BitcodeReader.cpp2
-rw-r--r--lib/CodeGen/ShadowStackGC.cpp9
-rw-r--r--lib/Linker/LinkModules.cpp16
-rw-r--r--lib/Transforms/IPO/ExtractGV.cpp4
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp35
-rw-r--r--lib/Transforms/Instrumentation/BlockProfiling.cpp8
-rw-r--r--lib/Transforms/Instrumentation/EdgeProfiling.cpp4
-rw-r--r--lib/Transforms/Instrumentation/RSProfiling.cpp10
-rw-r--r--lib/Transforms/Scalar/SimplifyLibCalls.cpp5
-rw-r--r--lib/Transforms/Utils/CloneModule.cpp4
-rw-r--r--lib/Transforms/Utils/LowerInvoke.cpp15
-rw-r--r--lib/VMCore/Core.cpp6
-rw-r--r--lib/VMCore/Globals.cpp17
-rw-r--r--lib/VMCore/Module.cpp16
-rw-r--r--tools/bugpoint/ExtractFunction.cpp8
-rw-r--r--tools/bugpoint/Miscompilation.cpp11
21 files changed, 133 insertions, 163 deletions
diff --git a/examples/BrainF/BrainF.cpp b/examples/BrainF/BrainF.cpp
index 7ae268f592..058ef8c72d 100644
--- a/examples/BrainF/BrainF.cpp
+++ b/examples/BrainF/BrainF.cpp
@@ -128,13 +128,12 @@ void BrainF::header(LLVMContext& C) {
get("Error: The head has left the tape.", true);
GlobalVariable *aberrormsg = new GlobalVariable(
- module->getContext(),
+ *module,
msg_0->getType(),
true,
GlobalValue::InternalLinkage,
msg_0,
- "aberrormsg",
- module);
+ "aberrormsg");
//declare i32 @puts(i8 *)
Function *puts_func = cast<Function>(module->
diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h
index a6505ad9cb..28eaa624e9 100644
--- a/include/llvm/GlobalVariable.h
+++ b/include/llvm/GlobalVariable.h
@@ -26,9 +26,9 @@
namespace llvm {
-class LLVMContext;
class Module;
class Constant;
+class LLVMContext;
template<typename ValueSubClass, typename ItemParentClass>
class SymbolTableListTraits;
@@ -50,17 +50,16 @@ public:
}
/// GlobalVariable ctor - If a parent module is specified, the global is
/// automatically inserted into the end of the specified modules global list.
- GlobalVariable(LLVMContext &Context, const Type *Ty,
- bool isConstant, LinkageTypes Linkage,
+ GlobalVariable(LLVMContext &Context, const Type *Ty, bool isConstant,
+ LinkageTypes Linkage,
Constant *Initializer = 0, const std::string &Name = "",
- Module *Parent = 0, bool ThreadLocal = false,
- unsigned AddressSpace = 0);
+ bool ThreadLocal = false, unsigned AddressSpace = 0);
/// GlobalVariable ctor - This creates a global and inserts it before the
/// specified other global.
- GlobalVariable(LLVMContext &Context, const Type *Ty,
- bool isConstant, LinkageTypes Linkage,
- Constant *Initializer, const std::string &Name,
- GlobalVariable *InsertBefore, bool ThreadLocal = false,
+ GlobalVariable(Module &M, const Type *Ty, bool isConstant,
+ LinkageTypes Linkage, Constant *Initializer,
+ const std::string &Name,
+ GlobalVariable *InsertBefore = 0, bool ThreadLocal = false,
unsigned AddressSpace = 0);
~GlobalVariable() {
diff --git a/include/llvm/Support/IRBuilder.h b/include/llvm/Support/IRBuilder.h
index f92f8654a5..0f4e471e05 100644
--- a/include/llvm/Support/IRBuilder.h
+++ b/include/llvm/Support/IRBuilder.h
@@ -20,7 +20,6 @@
#include "llvm/GlobalAlias.h"
#include "llvm/GlobalVariable.h"
#include "llvm/Function.h"
-#include "llvm/LLVMContext.h"
#include "llvm/Support/ConstantFolder.h"
namespace llvm {
@@ -43,16 +42,12 @@ template <bool preserveNames=true, typename T = ConstantFolder> class IRBuilder{
BasicBlock *BB;
BasicBlock::iterator InsertPt;
T Folder;
- LLVMContext& Context;
public:
- IRBuilder(const T& F = T(), LLVMContext &C = getGlobalContext()) :
- Folder(F), Context(C) { ClearInsertionPoint(); }
- explicit IRBuilder(BasicBlock *TheBB, const T& F = T(),
- LLVMContext &C = getGlobalContext()) :
- Folder(F), Context(C) { SetInsertPoint(TheBB); }
- IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F = T(),
- LLVMContext &C = getGlobalContext())
- : Folder(F), Context(C) { SetInsertPoint(TheBB, IP); }
+ IRBuilder(const T& F = T()) : Folder(F) { ClearInsertionPoint(); }
+ explicit IRBuilder(BasicBlock *TheBB, const T& F = T())
+ : Folder(F) { SetInsertPoint(TheBB); }
+ IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F = T())
+ : Folder(F) { SetInsertPoint(TheBB, IP); }
/// getFolder - Get the constant folder being used.
const T& getFolder() { return Folder; }
@@ -130,7 +125,7 @@ public:
///
ReturnInst *CreateAggregateRet(Value * const* retVals, unsigned N) {
const Type *RetType = BB->getParent()->getReturnType();
- Value *V = Context.getUndef(RetType);
+ Value *V = UndefValue::get(RetType);
for (unsigned i = 0; i != N; ++i)
V = CreateInsertValue(V, retVals[i], i, "mrv");
return Insert(ReturnInst::Create(V));
@@ -354,7 +349,7 @@ public:
return Insert(GetElementPtrInst::Create(Ptr, Idx), Name);
}
Value *CreateConstGEP1_32(Value *Ptr, unsigned Idx0, const char *Name = "") {
- Value *Idx = Context.getConstantInt(Type::Int32Ty, Idx0);
+ Value *Idx = ConstantInt::get(Type::Int32Ty, Idx0);
if (Constant *PC = dyn_cast<Constant>(Ptr))
return Folder.CreateGetElementPtr(PC, &Idx, 1);
@@ -364,8 +359,8 @@ public:
Value *CreateConstGEP2_32(Value *Ptr, unsigned Idx0, unsigned Idx1,
const char *Name = "") {
Value *Idxs[] = {
- Context.getConstantInt(Type::Int32Ty, Idx0),
- Context.getConstantInt(Type::Int32Ty, Idx1)
+ ConstantInt::get(Type::Int32Ty, Idx0),
+ ConstantInt::get(Type::Int32Ty, Idx1)
};
if (Constant *PC = dyn_cast<Constant>(Ptr))
@@ -374,7 +369,7 @@ public:
return Insert(GetElementPtrInst::Create(Ptr, Idxs, Idxs+2), Name);
}
Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const char *Name = "") {
- Value *Idx = Context.getConstantInt(Type::Int64Ty, Idx0);
+ Value *Idx = ConstantInt::get(Type::Int64Ty, Idx0);
if (Constant *PC = dyn_cast<Constant>(Ptr))
return Folder.CreateGetElementPtr(PC, &Idx, 1);
@@ -384,8 +379,8 @@ public:
Value *CreateConstGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
const char *Name = "") {
Value *Idxs[] = {
- Context.getConstantInt(Type::Int64Ty, Idx0),
- Context.getConstantInt(Type::Int64Ty, Idx1)
+ ConstantInt::get(Type::Int64Ty, Idx0),
+ ConstantInt::get(Type::Int64Ty, Idx1)
};
if (Constant *PC = dyn_cast<Constant>(Ptr))
@@ -397,21 +392,21 @@ public:
return CreateConstGEP2_32(Ptr, 0, Idx, Name);
}
Value *CreateGlobalString(const char *Str = "", const char *Name = "") {
- Constant *StrConstant = Context.getConstantArray(Str, true);
- GlobalVariable *gv = new GlobalVariable(Context,
+ Constant *StrConstant = ConstantArray::get(Str, true);
+ GlobalVariable *gv = new GlobalVariable(*BB->getParent()->getParent(),
StrConstant->getType(),
true,
GlobalValue::InternalLinkage,
StrConstant,
"",
- BB->getParent()->getParent(),
+ 0,
false);
gv->setName(Name);
return gv;
}
Value *CreateGlobalStringPtr(const char *Str = "", const char *Name = "") {
Value *gv = CreateGlobalString(Str, Name);
- Value *zero = Context.getConstantInt(Type::Int32Ty, 0);
+ Value *zero = ConstantInt::get(Type::Int32Ty, 0);
Value *Args[] = { zero, zero };
return CreateGEP(gv, Args, Args+2, Name);
}
@@ -688,13 +683,13 @@ public:
/// CreateIsNull - Return an i1 value testing if \arg Arg is null.
Value *CreateIsNull(Value *Arg, const char *Name = "") {
- return CreateICmpEQ(Arg, Context.getNullValue(Arg->getType()),
+ return CreateICmpEQ(Arg, Constant::getNullValue(Arg->getType()),
Name);
}
/// CreateIsNotNull - Return an i1 value testing if \arg Arg is not null.
Value *CreateIsNotNull(Value *Arg, const char *Name = "") {
- return CreateICmpNE(Arg, Context.getNullValue(Arg->getType()),
+ return CreateICmpNE(Arg, Constant::getNullValue(Arg->getType()),
Name);
}
@@ -709,7 +704,7 @@ public:
Value *RHS_int = CreatePtrToInt(RHS, Type::Int64Ty);
Value *Difference = CreateSub(LHS_int, RHS_int);
return CreateSDiv(Difference,
- Context.getConstantExprSizeOf(ArgType->getElementType()),
+ ConstantExpr::getSizeOf(ArgType->getElementType()),
Name);
}
};
diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp
index 363ecabaf2..491cc3f202 100644
--- a/lib/Analysis/DebugInfo.cpp
+++ b/lib/Analysis/DebugInfo.cpp
@@ -490,9 +490,9 @@ Constant *DIFactory::GetStringConstant(const std::string &String) {
Constant *ConstStr = VMContext.getConstantArray(String);
// Otherwise create and return a new string global.
- GlobalVariable *StrGV = new GlobalVariable(VMContext,ConstStr->getType(), true,
+ GlobalVariable *StrGV = new GlobalVariable(M, ConstStr->getType(), true,
GlobalVariable::InternalLinkage,
- ConstStr, ".str", &M);
+ ConstStr, ".str");
StrGV->setSection("llvm.metadata");
return Slot = VMContext.getConstantExprBitCast(StrGV, DestTy);
}
@@ -516,9 +516,9 @@ DIArray DIFactory::GetOrCreateArray(DIDescriptor *Tys, unsigned NumTys) {
DIDescriptor &Entry = SimpleConstantCache[Init];
if (!Entry.isNull()) return DIArray(Entry.getGV());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.array", &M);
+ Init, "llvm.dbg.array");
GV->setSection("llvm.metadata");
Entry = DIDescriptor(GV);
return DIArray(GV);
@@ -542,9 +542,9 @@ DISubrange DIFactory::GetOrCreateSubrange(int64_t Lo, int64_t Hi) {
M.addTypeName("llvm.dbg.subrange.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.subrange", &M);
+ Init, "llvm.dbg.subrange");
GV->setSection("llvm.metadata");
Entry = DIDescriptor(GV);
return DISubrange(GV);
@@ -579,9 +579,9 @@ DICompileUnit DIFactory::CreateCompileUnit(unsigned LangID,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.compile_unit.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::LinkOnceAnyLinkage,
- Init, "llvm.dbg.compile_unit", &M);
+ Init, "llvm.dbg.compile_unit");
GV->setSection("llvm.metadata");
return DICompileUnit(GV);
}
@@ -598,9 +598,9 @@ DIEnumerator DIFactory::CreateEnumerator(const std::string &Name, uint64_t Val){
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.enumerator.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.enumerator", &M);
+ Init, "llvm.dbg.enumerator");
GV->setSection("llvm.metadata");
return DIEnumerator(GV);
}
@@ -632,9 +632,9 @@ DIBasicType DIFactory::CreateBasicType(DIDescriptor Context,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.basictype.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.basictype", &M);
+ Init, "llvm.dbg.basictype");
GV->setSection("llvm.metadata");
return DIBasicType(GV);
}
@@ -668,9 +668,9 @@ DIDerivedType DIFactory::CreateDerivedType(unsigned Tag,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.derivedtype.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.derivedtype", &M);
+ Init, "llvm.dbg.derivedtype");
GV->setSection("llvm.metadata");
return DIDerivedType(GV);
}
@@ -708,9 +708,9 @@ DICompositeType DIFactory::CreateCompositeType(unsigned Tag,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.composite.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.composite", &M);
+ Init, "llvm.dbg.composite");
GV->setSection("llvm.metadata");
return DICompositeType(GV);
}
@@ -746,9 +746,9 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.subprogram.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::LinkOnceAnyLinkage,
- Init, "llvm.dbg.subprogram", &M);
+ Init, "llvm.dbg.subprogram");
GV->setSection("llvm.metadata");
return DISubprogram(GV);
}
@@ -780,9 +780,9 @@ DIFactory::CreateGlobalVariable(DIDescriptor Context, const std::string &Name,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.global_variable.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::LinkOnceAnyLinkage,
- Init, "llvm.dbg.global_variable", &M);
+ Init, "llvm.dbg.global_variable");
GV->setSection("llvm.metadata");
return DIGlobalVariable(GV);
}
@@ -806,9 +806,9 @@ DIVariable DIFactory::CreateVariable(unsigned Tag, DIDescriptor Context,
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.variable.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.variable", &M);
+ Init, "llvm.dbg.variable");
GV->setSection("llvm.metadata");
return DIVariable(GV);
}
@@ -826,9 +826,9 @@ DIBlock DIFactory::CreateBlock(DIDescriptor Context) {
sizeof(Elts)/sizeof(Elts[0]));
M.addTypeName("llvm.dbg.block.type", Init->getType());
- GlobalVariable *GV = new GlobalVariable(VMContext, Init->getType(), true,
+ GlobalVariable *GV = new GlobalVariable(M, Init->getType(), true,
GlobalValue::InternalLinkage,
- Init, "llvm.dbg.block", &M);
+ Init, "llvm.dbg.block");
GV->setSection("llvm.metadata");
return DIBlock(GV);
}
diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp
index 8c30ab5a70..3927cf1e9e 100644
--- a/lib/AsmParser/LLParser.cpp
+++ b/lib/AsmParser/LLParser.cpp
@@ -516,9 +516,8 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
}
if (GV == 0) {
- GV = new GlobalVariable(Context, Ty, false,
- GlobalValue::ExternalLinkage, 0, Name,
- M, false, AddrSpace);
+ GV = new GlobalVariable(*M, Ty, false, GlobalValue::ExternalLinkage, 0,
+ Name, 0, false, AddrSpace);
} else {
if (GV->getType()->getElementType() != Ty)
return Error(TyLoc,
@@ -608,8 +607,8 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, const Type *Ty,
FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, Name, M);
} else {
- FwdVal = new GlobalVariable(Context, PTy->getElementType(), false,
- GlobalValue::ExternalWeakLinkage, 0, Name, M);
+ FwdVal = new GlobalVariable(*M, PTy->getElementType(), false,
+ GlobalValue::ExternalWeakLinkage, 0, Name);
}
ForwardRefVals[Name] = std::make_pair(FwdVal, Loc);
@@ -652,8 +651,8 @@ GlobalValue *LLParser::GetGlobalVal(unsigned ID, const Type *Ty, LocTy Loc) {
}
FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, "", M);
} else {
- FwdVal = new GlobalVariable(Context, PTy->getElementType(), false,
- GlobalValue::ExternalWeakLinkage, 0, "", M);
+ FwdVal = new GlobalVariable(*M, PTy->getElementType(), false,
+ GlobalValue::ExternalWeakLinkage, 0, "");
}
ForwardRefValIDs[ID] = std::make_pair(FwdVal, Loc);
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp
index 78f1c8fd8b..d69895e0cc 100644
--- a/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1254,7 +1254,7 @@ bool BitcodeReader::ParseModule(const std::string &ModuleID) {
isThreadLocal = Record[7];
GlobalVariable *NewGV =
- new GlobalVariable(Context, Ty, isConstant, Linkage, 0, "", TheModule,
+ new GlobalVariable(*TheModule, Ty, isConstant, Linkage, 0, "", 0,
isThreadLocal, AddressSpace);
NewGV->setAlignment(Alignment);
if (!Section.empty())
diff --git a/lib/CodeGen/ShadowStackGC.cpp b/lib/CodeGen/ShadowStackGC.cpp
index efe7c0a6a9..10d0109d57 100644
--- a/lib/CodeGen/ShadowStackGC.cpp
+++ b/lib/CodeGen/ShadowStackGC.cpp
@@ -229,10 +229,9 @@ Constant *ShadowStackGC::GetFrameMap(Function &F) {
// to be a ModulePass (which means it cannot be in the 'llc' pipeline
// (which uses a FunctionPassManager (which segfaults (not asserts) if
// provided a ModulePass))).
- Constant *GV = new GlobalVariable(*F.getContext(), FrameMap->getType(), true,
+ Constant *GV = new GlobalVariable(*F.getParent(), FrameMap->getType(), true,
GlobalVariable::InternalLinkage,
- FrameMap, "__gc_" + F.getName(),
- F.getParent());
+ FrameMap, "__gc_" + F.getName());
Constant *GEPIndices[2] = { ConstantInt::get(Type::Int32Ty, 0),
ConstantInt::get(Type::Int32Ty, 0) };
@@ -292,10 +291,10 @@ bool ShadowStackGC::initializeCustomLowering(Module &M) {
if (!Head) {
// If the root chain does not exist, insert a new one with linkonce
// linkage!
- Head = new GlobalVariable(M.getContext(), StackEntryPtrTy, false,
+ Head = new GlobalVariable(M, StackEntryPtrTy, false,
GlobalValue::LinkOnceAnyLinkage,
Constant::getNullValue(StackEntryPtrTy),
- "llvm_gc_root_chain", &M);
+ "llvm_gc_root_chain");
} else if (Head->hasExternalLinkage() && Head->isDeclaration()) {
Head->setInitializer(Constant::getNullValue(StackEntryPtrTy));
Head->setLinkage(GlobalValue::LinkOnceAnyLinkage);
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp
index cb2b9e46b6..a69f724bcc 100644
--- a/lib/Linker/LinkModules.cpp
+++ b/lib/Linker/LinkModules.cpp
@@ -573,9 +573,9 @@ static bool LinkGlobals(Module *Dest, const Module *Src,
// symbol over in the dest module... the initializer will be filled in
// later by LinkGlobalInits.
GlobalVariable *NewDGV =
- new GlobalVariable(Context, SGV->getType()->getElementType(),
+ new GlobalVariable(*Dest, SGV->getType()->getElementType(),
SGV->isConstant(), SGV->getLinkage(), /*init*/0,
- SGV->getName(), Dest, false,
+ SGV->getName(), 0, false,
SGV->getType()->getAddressSpace());
// Propagate alignment, visibility and section info.
CopyGVAttributes(NewDGV, SGV);
@@ -606,9 +606,9 @@ static bool LinkGlobals(Module *Dest, const Module *Src,
// AppendingVars map. The name is cleared out so that no linkage is
// performed.
GlobalVariable *NewDGV =
- new GlobalVariable(Context, SGV->getType()->getElementType(),
+ new GlobalVariable(*Dest, SGV->getType()->getElementType(),
SGV->isConstant(), SGV->getLinkage(), /*init*/0,
- "", Dest, false,
+ "", 0, false,
SGV->getType()->getAddressSpace());
// Set alignment allowing CopyGVAttributes merge it with alignment of SGV.
@@ -634,9 +634,9 @@ static bool LinkGlobals(Module *Dest, const Module *Src,
// we are replacing may be a function (if a prototype, weak, etc) or a
// global variable.
GlobalVariable *NewDGV =
- new GlobalVariable(Context, SGV->getType()->getElementType(),
+ new GlobalVariable(*Dest, SGV->getType()->getElementType(),
SGV->isConstant(), NewLinkage, /*init*/0,
- DGV->getName(), Dest, false,
+ DGV->getName(), 0, false,
SGV->getType()->getAddressSpace());
// Propagate alignment, section, and visibility info.
@@ -1157,8 +1157,8 @@ static bool LinkAppendingVars(Module *M,
// Create the new global variable...
GlobalVariable *NG =
- new GlobalVariable(Context, NewType, G1->isConstant(), G1->getLinkage(),
- /*init*/0, First->first, M, G1->isThreadLocal(),
+ new GlobalVariable(*M, NewType, G1->isConstant(), G1->getLinkage(),
+ /*init*/0, First->first, 0, G1->isThreadLocal(),
G1->getType()->getAddressSpace());
// Propagate alignment, visibility and section info.
diff --git a/lib/Transforms/IPO/ExtractGV.cpp b/lib/Transforms/IPO/ExtractGV.cpp
index e26bd3a2a0..b7c5ca3e6e 100644
--- a/lib/Transforms/IPO/ExtractGV.cpp
+++ b/lib/Transforms/IPO/ExtractGV.cpp
@@ -108,9 +108,9 @@ namespace {
}
ArrayType *AT = Context->getArrayType(SBP, AUGs.size());
Constant *Init = Context->getConstantArray(AT, AUGs);
- GlobalValue *gv = new GlobalVariable(M.getContext(), AT, false,
+ GlobalValue *gv = new GlobalVariable(M, AT, false,
GlobalValue::AppendingLinkage,
- Init, "llvm.used", &M);
+ Init, "llvm.used");
gv->setSection("llvm.metadata");
}
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index eb13067ff0..2cd8b6b79a 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -490,11 +490,10 @@ static GlobalVariable *SRAGlobal(GlobalVariable *GV, const TargetData &TD,
Context->getConstantInt(Type::Int32Ty, i),
Context);
assert(In && "Couldn't get element of initializer?");
- GlobalVariable *NGV = new GlobalVariable(*Context, STy->getElementType(i),
- false,
+ GlobalVariable *NGV = new GlobalVariable(*Context,
+ STy->getElementType(i), false,
GlobalVariable::InternalLinkage,
In, GV->getName()+"."+utostr(i),
- (Module *)NULL,
GV->isThreadLocal(),
GV->getType()->getAddressSpace());
Globals.insert(GV, NGV);
@@ -527,13 +526,12 @@ static GlobalVariable *SRAGlobal(GlobalVariable *GV, const TargetData &TD,
Context);
assert(In && "Couldn't get element of initializer?");
- GlobalVariable *NGV = new GlobalVariable(*Context, STy->getElementType(),
- false,
+ GlobalVariable *NGV = new GlobalVariable(*Context,
+ STy->getElementType(), false,
GlobalVariable::InternalLinkage,
In, GV->getName()+"."+utostr(i),
- (Module *)NULL,
GV->isThreadLocal(),
- GV->getType()->getAddressSpace());
+ GV->getType()->getAddressSpace());
Globals.insert(GV, NGV);
NewGlobals.push_back(NGV);
@@ -842,18 +840,17 @@ static GlobalVariable *OptimizeGlobalAddressOfMalloc(GlobalVariable *GV,
// Create the new global variable. The contents of the malloc'd memory is
// undefined, so initialize with an undef value.
+ // FIXME: This new global should have the alignment returned by malloc. Code
+ // could depend on malloc returning large alignment (on the mac, 16 bytes) but
+ // this would only guarantee some lower alignment.
Constant *Init = Context->getUndef(MI->getAllocatedType());
- GlobalVariable *NewGV = new GlobalVariable(*Context, MI->getAllocatedType(),
- false,
+ GlobalVariable *NewGV = new GlobalVariable(*GV->getParent(),
+ MI->getAllocatedType(), false,
GlobalValue::InternalLinkage, Init,
GV->getName()+".body",
- (Module *)NULL,
+ GV,
GV->isThreadLocal());
- // FIXME: This new global should have the alignment returned by malloc. Code
- // could depend on malloc returning large alignment (on the mac, 16 bytes) but
- // this would only guarantee some lower alignment.
- GV->getParent()->getGlobalList().insert(GV, NewGV);
-
+
// Anything that used the malloc now uses the global directly.
MI->replaceAllUsesWith(NewGV);
@@ -868,7 +865,7 @@ static GlobalVariable *OptimizeGlobalAddressOfMalloc(GlobalVariable *GV,
new GlobalVariable(*Context, Type::Int1Ty, false,
GlobalValue::InternalLinkage,
Context->getConstantIntFalse(), GV->getName()+".init",
- (Module *)NULL, GV->isThreadLocal());
+ GV->isThreadLocal());
bool InitBoolUsed = false;
// Loop over all uses of GV, processing them in turn.
@@ -1286,8 +1283,8 @@ static GlobalVariable *PerformHeapAllocSRoA(GlobalVariable *GV, MallocInst *MI,
const Type *PFieldTy = Context->getPointerTypeUnqual(FieldTy);
GlobalVariable *NGV =
- new GlobalVariable(*Context, PFieldTy, false,
- GlobalValue::InternalLinkage,
+ new GlobalVariable(*GV->getParent(),
+ PFieldTy, false, GlobalValue::InternalLinkage,
Context->getNullValue(PFieldTy),
GV->getName() + ".f" + utostr(FieldNo), GV,
GV->isThreadLocal());
@@ -1587,7 +1584,6 @@ static bool TryToShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal,
GlobalVariable *NewGV = new GlobalVariable(*Context, Type::Int1Ty, false,
GlobalValue::InternalLinkage, Context->getConstantIntFalse(),
GV->getName()+".b",
- (Module *)NULL,
GV->isThreadLocal());
GV->getParent()->getGlobalList().insert(GV, NewGV);
@@ -1982,7 +1978,6 @@ static GlobalVariable *InstallGlobalCtors(GlobalVariable *GCL,
GlobalVariable *NGV = new GlobalVariable(*Context, CA->getType(),
GCL->isConstant(),
GCL->getLinkage(), CA, "",
- (Module *)NULL,
GCL->isThreadLocal());
GCL->getParent()->getGlobalList().insert(GCL, NGV);
NGV->takeName(GCL);
diff --git a/lib/Transforms/Instrumentation/BlockProfiling.cpp b/lib/Transforms/Instrumentation/BlockProfiling.cpp
index 6dfcc0b051..440f59b37d 100644
--- a/lib/Transforms/Instrumentation/BlockProfiling.cpp
+++ b/lib/Transforms/Instrumentation/BlockProfiling.cpp
@@ -65,8 +65,8 @@ bool FunctionProfiler::runOnModule(Module &M) {
const Type *ATy = Context->getArrayType(Type::Int32Ty, NumFunctions);
GlobalVariable *Counters =
- new GlobalVariable(M.getContext(), ATy, false, GlobalValue::InternalLinkage,
- Context->getNullValue(ATy), "FuncProfCounters", &M);
+ new GlobalVariable(M, ATy, false, GlobalValue::InternalLinkage,
+ Context->getNullValue(ATy), "FuncProfCounters");
// Instrument all of the functions...
unsigned i = 0;
@@ -110,8 +110,8 @@ bool BlockProfiler::runOnModule(Module &M) {
const Type *ATy = Context->getArrayType(Type::Int32Ty, NumBlocks);
GlobalVariable *Counters =
- new GlobalVariable(M.getContext(), ATy, false, GlobalValue::InternalLinkage,
- Context->getNullValue(ATy), "BlockProfCounters", &M);
+ new GlobalVariable(M, ATy, false, GlobalValue::InternalLinkage,
+ Context->getNullValue(ATy), "BlockProfCounters");
// Instrument all of the blocks...
unsigned i = 0;
diff --git a/lib/Transforms/Instrumentation/EdgeProfiling.cpp b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
index b625341273..c3ec4b92f0 100644
--- a/lib/Transforms/Instrumentation/EdgeProfiling.cpp
+++ b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
@@ -66,8 +66,8 @@ bool EdgeProfiler::runOnModule(Module &M) {
const Type *ATy = Context->getArrayType(Type::Int32Ty, NumEdges);
GlobalVariable *Counters =
- new GlobalVariable(M.getContext(), ATy, false, GlobalValue::InternalLinkage,
- Context->getNullValue(ATy), "EdgeProfCounters", &M);
+ new GlobalVariable(M, ATy, false, GlobalValue::InternalLinkage,
+ Context->getNullValue(ATy), "EdgeProfCounters");
// Instrument all of the edges...
unsigned i = 0;
diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp
index 0999a279ef..5101220953 100644
--- a/lib/Transforms/Instrumentation/RSProfiling.cpp
+++ b/lib/Transforms/Instrumentation/RSProfiling.cpp
@@ -198,9 +198,8 @@ GlobalRandomCounter::GlobalRandomCounter(Module& M, const IntegerType* t,
uint64_t resetval) : T(t) {
ConstantInt* Init = M.getContext().getConstantInt(T, resetval);
ResetValue = Init;
- Counter = new GlobalVariable(M.getContext(), T, false,
- GlobalValue::InternalLinkage,
- Init, "RandomSteeringCounter", &M);
+ Counter = new GlobalVariable(M, T, false, GlobalValue::InternalLinkage,
+ Init, "RandomSteeringCounter");
}
GlobalRandomCounter::~GlobalRandomCounter() {}
@@ -238,9 +237,8 @@ GlobalRandomCounterOpt::G