Check that TD isn't NULL before dereferencing it down this path.
[oota-llvm.git] / lib / Transforms / IPO / GlobalOpt.cpp
index 183a599bc1226d476101d741efda8aa12f51b438..20af15ed0087119c37d0541b99bde1b8f7ba63d5 100644 (file)
@@ -2783,7 +2783,7 @@ bool Evaluator::EvaluateBlock(BasicBlock::iterator CurInst,
           Value *Ptr = PtrArg->stripPointerCasts();
           if (GlobalVariable *GV = dyn_cast<GlobalVariable>(Ptr)) {
             Type *ElemTy = cast<PointerType>(GV->getType())->getElementType();
-            if (!Size->isAllOnesValue() &&
+            if (TD && !Size->isAllOnesValue() &&
                 Size->getValue().getLimitedValue() >=
                 TD->getTypeStoreSize(ElemTy)) {
               Invariants.insert(GV);
@@ -3043,7 +3043,7 @@ bool GlobalOpt::OptimizeGlobalCtorsList(GlobalVariable *&GCL) {
 /// \brief Given "llvm.used" or "llvm.compiler.used" as a global name, collect
 /// the initializer elements of that global in Set and return the global itself.
 static GlobalVariable *
-collectUsedGlobalVariables(const Module &M, const char *Name,
+collectUsedGlobalVariables(Module &M, const char *Name,
                            SmallPtrSet<GlobalValue *, 8> &Set) {
   GlobalVariable *GV = M.getGlobalVariable(Name);
   if (!GV || !GV->hasInitializer())
@@ -3106,7 +3106,7 @@ class LLVMUsed {
   GlobalVariable *CompilerUsedV;
 
 public:
-  LLVMUsed(const Module &M) {
+  LLVMUsed(Module &M) {
     UsedV = collectUsedGlobalVariables(M, "llvm.used", Used);
     CompilerUsedV =
         collectUsedGlobalVariables(M, "llvm.compiler.used", CompilerUsed);