bug 122:
authorReid Spencer <rspencer@reidspencer.com>
Sun, 18 Jul 2004 00:44:37 +0000 (00:44 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sun, 18 Jul 2004 00:44:37 +0000 (00:44 +0000)
- Replace ConstantPointerRef usage with GlobalValue usage

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14953 91177308-0d34-0410-b5e6-96231b3b80d8

19 files changed:
lib/Debugger/ProgramInfo.cpp
lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp
lib/Target/SparcV9/InternalGlobalMapper.cpp
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
lib/Target/SparcV9/SparcV9AsmPrinter.cpp
lib/Transforms/IPO/FunctionResolution.cpp
lib/Transforms/IPO/GlobalOpt.cpp
lib/Transforms/IPO/Inliner.cpp
lib/Transforms/IPO/RaiseAllocations.cpp
lib/Transforms/Instrumentation/BlockProfiling.cpp
lib/Transforms/Instrumentation/EdgeProfiling.cpp
lib/Transforms/Instrumentation/EmitFunctions.cpp
lib/Transforms/Instrumentation/ProfilingUtils.cpp
lib/Transforms/Instrumentation/ProfilingUtils.h
lib/Transforms/Instrumentation/TraceValues.cpp
lib/Transforms/Utils/LowerInvoke.cpp
lib/Transforms/Utils/ValueMapper.cpp
tools/bugpoint/Miscompilation.cpp

index a3e55a3aef162c5115795a78f8006e8c1964f028..c08a8aaa647a0c61cbf42a0012b71fc4c0858f3d 100644 (file)
@@ -61,8 +61,8 @@ static std::string getStringValue(Value *V, unsigned Offset = 0) {
       }
     }
   } else if (Constant *C = dyn_cast<Constant>(V)) {
-    if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(C))
-      return getStringValue(CPR->getValue(), Offset);
+    if (GlobalValue *GV = dyn_cast<GlobalValue>(C))
+      return getStringValue(GV, Offset);
     else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(C)) {
       if (CE->getOpcode() == Instruction::GetElementPtr) {
         // Turn a gep into the specified offset.
@@ -108,8 +108,6 @@ static const GlobalVariable *getNextStopPoint(const Value *V, unsigned &LineNo,
           if (const ConstantInt *C = dyn_cast<ConstantInt>(CI->getOperand(3)))
             CurColNo = C->getRawValue();
           const Value *Op = CI->getOperand(4);
-          if (const ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(Op))
-            Op = CPR->getValue();
           
           if ((CurDesc = dyn_cast<GlobalVariable>(Op)) &&
               (LineNo < LastLineNo ||
@@ -192,11 +190,9 @@ SourceFunctionInfo::SourceFunctionInfo(ProgramInfo &PI,
     if (ConstantStruct *CS = dyn_cast<ConstantStruct>(Desc->getInitializer()))
       if (CS->getNumOperands() > 2) {
         // Entry #1 is the file descriptor.
-        if (const ConstantPointerRef *CPR =
-            dyn_cast<ConstantPointerRef>(CS->getOperand(1)))
-          if (const GlobalVariable *GV =
-              dyn_cast<GlobalVariable>(CPR->getValue()))
-            SourceFile = &PI.getSourceFile(GV);
+        if (const GlobalVariable *GV = 
+            dyn_cast<GlobalVariable>(CS->getOperand(1)))
+          SourceFile = &PI.getSourceFile(GV);
 
         // Entry #2 is the function name.
         Name = getStringValue(CS->getOperand(2));
@@ -366,9 +362,9 @@ ProgramInfo::getFunction(const GlobalVariable *Desc) {
   if (Desc && Desc->hasInitializer())
     if (ConstantStruct *CS = dyn_cast<ConstantStruct>(Desc->getInitializer()))
       if (CS->getNumOperands() > 0)
-        if (const ConstantPointerRef *CPR =
-            dyn_cast<ConstantPointerRef>(CS->getOperand(1)))
-          SourceFileDesc = dyn_cast<GlobalVariable>(CPR->getValue());
+        if (const GlobalVariable *GV =
+            dyn_cast<GlobalVariable>(CS->getOperand(1)))
+          SourceFileDesc = GV;
 
   const SourceLanguage &Lang = getSourceFile(SourceFileDesc).getLanguage();
   return *(Result = Lang.createSourceFunctionInfo(Desc, *this));
index 139320f64033962062eaacf6aad7d24d141b7050..c1cd657cf220ec9ec9c15d669a90abea92d56d32 100644 (file)
@@ -620,8 +620,8 @@ void CWriter::printConstant(Constant *CPV) {
       printType(Out, CPV->getType());
       Out << ")/*NULL*/0)";
       break;
-    } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(CPV)) {
-      writeOperand(CPR->getValue());
+    } else if (GlobalValue *GV = dyn_cast<GlobalValue>(CPV)) {
+      writeOperand(GV);
       break;
     }
     // FALL THROUGH
@@ -641,7 +641,8 @@ void CWriter::writeOperandInternal(Value *Operand) {
       return;
     }
   
-  if (Constant *CPV = dyn_cast<Constant>(Operand)) {
+  Constant* CPV = dyn_cast<Constant>(Operand);
+  if (CPV && !isa<GlobalValue>(CPV)) {
     printConstant(CPV); 
   } else {
     Out << Mang->getValueName(Operand);
@@ -1412,9 +1413,6 @@ void CWriter::printIndexingExpression(Value *Ptr, gep_type_iterator I,
   // If accessing a global value with no indexing, avoid *(&GV) syndrome
   if (GlobalValue *V = dyn_cast<GlobalValue>(Ptr)) {
     HasImplicitAddress = true;
-  } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(Ptr)) {
-    HasImplicitAddress = true;
-    Ptr = CPR->getValue();         // Get to the global...
   } else if (isDirectAlloca(Ptr)) {
     HasImplicitAddress = true;
   }
index 139320f64033962062eaacf6aad7d24d141b7050..c1cd657cf220ec9ec9c15d669a90abea92d56d32 100644 (file)
@@ -620,8 +620,8 @@ void CWriter::printConstant(Constant *CPV) {
       printType(Out, CPV->getType());
       Out << ")/*NULL*/0)";
       break;
-    } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(CPV)) {
-      writeOperand(CPR->getValue());
+    } else if (GlobalValue *GV = dyn_cast<GlobalValue>(CPV)) {
+      writeOperand(GV);
       break;
     }
     // FALL THROUGH
@@ -641,7 +641,8 @@ void CWriter::writeOperandInternal(Value *Operand) {
       return;
     }
   
-  if (Constant *CPV = dyn_cast<Constant>(Operand)) {
+  Constant* CPV = dyn_cast<Constant>(Operand);
+  if (CPV && !isa<GlobalValue>(CPV)) {
     printConstant(CPV); 
   } else {
     Out << Mang->getValueName(Operand);
@@ -1412,9 +1413,6 @@ void CWriter::printIndexingExpression(Value *Ptr, gep_type_iterator I,
   // If accessing a global value with no indexing, avoid *(&GV) syndrome
   if (GlobalValue *V = dyn_cast<GlobalValue>(Ptr)) {
     HasImplicitAddress = true;
-  } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(Ptr)) {
-    HasImplicitAddress = true;
-    Ptr = CPR->getValue();         // Get to the global...
   } else if (isDirectAlloca(Ptr)) {
     HasImplicitAddress = true;
   }
index 7d4a40a13bea4d6bdbc38e12972506ce459981ca..0cd2faa7c31febc097d10e7b9f1d5d880beb43b6 100644 (file)
@@ -42,7 +42,7 @@ static void maybeAddInternalValueToVector (GVVectorTy &Vector, GlobalValue &GV){
   // add a null.
   if (GV.hasInternalLinkage () && GV.hasName ())
     Vector.push_back (ConstantExpr::getCast
-      (ConstantPointerRef::get (&GV), PointerType::get (Type::SByteTy)));
+      (&GV, PointerType::get (Type::SByteTy)));
   else
     Vector.push_back (ConstantPointerNull::get (PointerType::get
                                                 (Type::SByteTy)));
index a153871d80cbc37bf61f5a28da1e5f3fc7fa5bf5..6aebcb5f8417d0da076611fe6b46bf76a457f6f1 100644 (file)
@@ -1289,7 +1289,7 @@ void PhyRegAlloc::finishSavingState (Module &M) {
 
       // Have: { uint, [Size x { uint, int, uint, int }] } *
       // Cast it to: { uint, [0 x { uint, int, uint, int }] } *
-      Constant *CE = ConstantExpr::getCast (ConstantPointerRef::get (GV), PT);
+      Constant *CE = ConstantExpr::getCast (GV, PT);
       allstate.push_back (CE);
     }
   }
index aa183452553090aa62ff8e66b87ebee72d0df556..addcbdcc0c192b9b691ff0dfa8c23de927b5b632 100644 (file)
@@ -317,11 +317,8 @@ void AsmPrinter::printSingleConstantValue(const Constant* CV) {
   
   toAsm << "\t" << TypeToDataDirective(CV->getType()) << "\t";
   
-  if (const ConstantPointerRef* CPR = dyn_cast<ConstantPointerRef>(CV)) {
-    // This is a constant address for a global variable or method.
-    // Use the name of the variable or method as the address value.
-    assert(isa<GlobalValue>(CPR->getValue()) && "Unexpected non-global");
-    toAsm << getID(CPR->getValue()) << "\n";
+  if (const GlobalValue* GV = dyn_cast<GlobalValue>(CV)) {
+    toAsm << getID(GV) << "\n";
   } else if (isa<ConstantPointerNull>(CV)) {
     // Null pointer value
     toAsm << "0\n";
@@ -480,7 +477,9 @@ std::string AsmPrinter::valToExprString(const Value* V,
                                         const TargetMachine& target) {
   std::string S;
   bool failed = false;
-  if (const Constant* CV = dyn_cast<Constant>(V)) { // symbolic or known
+  if (const GlobalValue* GV = dyn_cast<GlobalValue>(V)) {
+    S += getID(GV);
+  } else if (const Constant* CV = dyn_cast<Constant>(V)) { // symbolic or known
     if (const ConstantBool *CB = dyn_cast<ConstantBool>(CV))
       S += std::string(CB == ConstantBool::True ? "1" : "0");
     else if (const ConstantSInt *CI = dyn_cast<ConstantSInt>(CV))
@@ -491,14 +490,10 @@ std::string AsmPrinter::valToExprString(const Value* V,
       S += ftostr(CFP->getValue());
     else if (isa<ConstantPointerNull>(CV))
       S += "0";
-    else if (const ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(CV))
-      S += valToExprString(CPR->getValue(), target);
     else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CV))
       S += ConstantExprToString(CE, target);
     else
       failed = true;
-  } else if (const GlobalValue* GV = dyn_cast<GlobalValue>(V)) {
-    S += getID(GV);
   } else
     failed = true;
 
index 303cad1e7d24565e9f42cb6c6c7583ba251c2a9f..695287f7c443b19ba11b7f3747b82d2b68a3bf52 100644 (file)
@@ -101,8 +101,7 @@ static bool ResolveFunctions(Module &M, std::vector<GlobalValue*> &Globals,
       if (!Old->use_empty()) {  // Avoid making the CPR unless we really need it
         Value *Replacement = Concrete;
         if (Concrete->getType() != Old->getType())
-          Replacement = ConstantExpr::getCast(ConstantPointerRef::get(Concrete),
-                                              Old->getType());
+          Replacement = ConstantExpr::getCast(Concrete,Old->getType());
         NumResolved += Old->use_size();
         Old->replaceAllUsesWith(Replacement);
       }
@@ -118,11 +117,10 @@ static bool ResolveGlobalVariables(Module &M,
                                    std::vector<GlobalValue*> &Globals,
                                    GlobalVariable *Concrete) {
   bool Changed = false;
-  Constant *CCPR = ConstantPointerRef::get(Concrete);
 
   for (unsigned i = 0; i != Globals.size(); ++i)
     if (Globals[i] != Concrete) {
-      Constant *Cast = ConstantExpr::getCast(CCPR, Globals[i]->getType());
+      Constant *Cast = ConstantExpr::getCast(Concrete, Globals[i]->getType());
       Globals[i]->replaceAllUsesWith(Cast);
 
       // Since there are no uses of Old anymore, remove it from the module.
@@ -138,8 +136,8 @@ static bool ResolveGlobalVariables(Module &M,
 static bool CallersAllIgnoreReturnValue(Function &F) {
   if (F.getReturnType() == Type::VoidTy) return true;
   for (Value::use_iterator I = F.use_begin(), E = F.use_end(); I != E; ++I) {
-    if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(*I)) {
-      for (Value::use_iterator I = CPR->use_begin(), E = CPR->use_end();
+    if (GlobalValue *GV = dyn_cast<GlobalValue>(*I)) {
+      for (Value::use_iterator I = GV->use_begin(), E = GV->use_end();
            I != E; ++I) {
         CallSite CS = CallSite::get(*I);
         if (!CS.getInstruction() || !CS.getInstruction()->use_empty())
index c30ec5f47c196875a74b5026de3751b1ff2885a4..3478d9de41b309c19a6363b285f31600efe6d23b 100644 (file)
@@ -48,8 +48,8 @@ static bool isStoredThrough(Value *V) {
       if (ConstantExpr *CE = dyn_cast<ConstantExpr>(C)) {
         if (isStoredThrough(CE))
           return true;
-      } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(C)) {
-        if (isStoredThrough(CPR)) return true;
+      } else if (GlobalValue *GV = dyn_cast<GlobalValue>(C)) {
+        if (isStoredThrough(GV)) return true;
       } else {
         // Must be an element of a constant array or something.
         return true;
index 8fca96812b0870a57a1bcf0eb97d677d3410a78c..ed5efe22acc794c37224b72d86dd7a6369f3a7a4 100644 (file)
@@ -14,7 +14,6 @@
 //===----------------------------------------------------------------------===//
 
 #include "Inliner.h"
-#include "llvm/Constants.h"   // ConstantPointerRef should die
 #include "llvm/Module.h"
 #include "llvm/iOther.h"
 #include "llvm/iTerminators.h"
@@ -174,9 +173,9 @@ bool Inliner::doFinalization(CallGraph &CG) {
     // If the only remaining use of the function is a dead constant
     // pointer ref, remove it.
     if (F && F->hasOneUse())
-      if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(F->use_back()))
-        if (CPR->use_empty()) {
-          CPR->destroyConstant();
+      if (Function *GV = dyn_cast<Function>(F->use_back()))
+        if (GV->removeDeadConstantUsers()) {
+         delete GV;
           if (F->hasInternalLinkage()) {
             // There *MAY* be an edge from the external call node to this
             // function.  If so, remove it.
index 5302d8f7a1abc18e0162fe0cd23ac93461c4c408..ca8b7cc55372724d4af58864ab3d47ff11de97d7 100644 (file)
@@ -158,9 +158,9 @@ bool RaiseAllocations::run(Module &M) {
           Changed = true;
           ++NumRaised;
         }
-      } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(U)) {
-        Users.insert(Users.end(), CPR->use_begin(), CPR->use_end());
-        EqPointers.push_back(CPR);
+      } else if (GlobalValue *GV = dyn_cast<GlobalValue>(U)) {
+        Users.insert(Users.end(), GV->use_begin(), GV->use_end());
+        EqPointers.push_back(GV);
       } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(U)) {
         if (CE->getOpcode() == Instruction::Cast) {
           Users.insert(Users.end(), CE->use_begin(), CE->use_end());
@@ -207,9 +207,9 @@ bool RaiseAllocations::run(Module &M) {
           Changed = true;
           ++NumRaised;
         }
-      } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(U)) {
-        Users.insert(Users.end(), CPR->use_begin(), CPR->use_end());
-        EqPointers.push_back(CPR);
+      } else if (GlobalValue *GV = dyn_cast<GlobalValue>(U)) {
+        Users.insert(Users.end(), GV->use_begin(), GV->use_end());
+        EqPointers.push_back(GV);
       } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(U)) {
         if (CE->getOpcode() == Instruction::Cast) {
           Users.insert(Users.end(), CE->use_begin(), CE->use_end());
index b7c19e6e0972a9567b9a48e4c27fe11289491c2b..e357e841cdc7005c478c789b13a8b7d0c323349a 100644 (file)
@@ -55,14 +55,12 @@ bool FunctionProfiler::run(Module &M) {
     new GlobalVariable(ATy, false, GlobalValue::InternalLinkage,
                        Constant::getNullValue(ATy), "FuncProfCounters", &M);
 
-  ConstantPointerRef *CounterCPR = ConstantPointerRef::get(Counters);
-
   // Instrument all of the functions...
   unsigned i = 0;
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) 
     if (!I->isExternal())
       // Insert counter at the start of the function
-      IncrementCounterInBlock(I->begin(), i++, CounterCPR);
+      IncrementCounterInBlock(I->begin(), i++, Counters);
 
   // Add the initialization call to main.
   InsertProfilingInitCall(Main, "llvm_start_func_profiling", Counters);
@@ -96,14 +94,12 @@ bool BlockProfiler::run(Module &M) {
     new GlobalVariable(ATy, false, GlobalValue::InternalLinkage,
                        Constant::getNullValue(ATy), "BlockProfCounters", &M);
 
-  ConstantPointerRef *CounterCPR = ConstantPointerRef::get(Counters);
-
   // Instrument all of the blocks...
   unsigned i = 0;
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) 
     for (Function::iterator BB = I->begin(), E = I->end(); BB != E; ++BB)
       // Insert counter at the start of the block
-      IncrementCounterInBlock(BB, i++, CounterCPR);
+      IncrementCounterInBlock(BB, i++, Counters);
 
   // Add the initialization call to main.
   InsertProfilingInitCall(Main, "llvm_start_block_profiling", Counters);
index ef334f22f3353fcb91d1a37afa3ac44d26a350b5..c584ca5dfe3b0ac6d060930b1721e1dcd473cae0 100644 (file)
@@ -60,8 +60,6 @@ bool EdgeProfiler::run(Module &M) {
     new GlobalVariable(ATy, false, GlobalValue::InternalLinkage,
                        Constant::getNullValue(ATy), "EdgeProfCounters", &M);
 
-  ConstantPointerRef *CounterCPR = ConstantPointerRef::get(Counters);
-
   // Instrument all of the edges...
   unsigned i = 0;
   for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
@@ -80,10 +78,10 @@ bool EdgeProfiler::run(Module &M) {
           // otherwise insert it in the successor block.
           if (TI->getNumSuccessors() == 0) {
             // Insert counter at the start of the block
-            IncrementCounterInBlock(BB, i++, CounterCPR);
+            IncrementCounterInBlock(BB, i++, Counters);
           } else {
             // Insert counter at the start of the block
-            IncrementCounterInBlock(TI->getSuccessor(s), i++, CounterCPR);
+            IncrementCounterInBlock(TI->getSuccessor(s), i++, Counters);
           }
         }
       }
index 27c25875468ddfe35174375bda2332a570d303cf..a1c23dab23837e46c630c7969344ff8f78b63b44 100644 (file)
@@ -77,7 +77,7 @@ bool EmitFunctionTable::run(Module &M){
     
       //std::cerr<<MI;
 
-      vConsts.push_back(ConstantPointerRef::get(MI));
+      vConsts.push_back(MI);
       sBCons.push_back(ConstantInt::get(Type::SByteTy, hasBackEdge(MI)));
       
       counter++;
index 3c22b4bf42eb877d90e0216ea5316cc1c20b1edb..1c0c4ada32fa8899cc770c8706e983af8980affb 100644 (file)
@@ -42,8 +42,7 @@ void llvm::InsertProfilingInitCall(Function *MainFn, const char *FnName,
   std::vector<Constant*> GEPIndices(2, Constant::getNullValue(Type::IntTy));
   unsigned NumElements = 0;
   if (Array) {
-    ConstantPointerRef *ArrayCPR = ConstantPointerRef::get(Array);
-    Args[2] = ConstantExpr::getGetElementPtr(ArrayCPR, GEPIndices);
+    Args[2] = ConstantExpr::getGetElementPtr(Array, GEPIndices);
     NumElements =
       cast<ArrayType>(Array->getType()->getElementType())->getNumElements();
   } else {
@@ -87,7 +86,7 @@ void llvm::InsertProfilingInitCall(Function *MainFn, const char *FnName,
 }
 
 void llvm::IncrementCounterInBlock(BasicBlock *BB, unsigned CounterNum,
-                                   ConstantPointerRef *CounterArray) {
+                                   GlobalValue *CounterArray) {
   // Insert the increment after any alloca or PHI instructions...
   BasicBlock::iterator InsertPos = BB->begin();
   while (isa<AllocaInst>(InsertPos) || isa<PHINode>(InsertPos))
index 17e234806c13d058285079acc3ba6779ad77a5dc..c6d1b73928eac9ad75cb512bd89c3e57d4d8941a 100644 (file)
@@ -26,7 +26,7 @@ namespace llvm {
   void InsertProfilingInitCall(Function *MainFn, const char *FnName,
                                GlobalValue *Arr = 0);
   void IncrementCounterInBlock(BasicBlock *BB, unsigned CounterNum,
-                               ConstantPointerRef *CounterArray);
+                               GlobalValue *CounterArray);
 }
 
 #endif
index 30904a627e6924d18c43738acb9b7e46e6af3a81..6cc46fa6c6719aa427a16f451bac37aa269312c3 100644 (file)
@@ -243,7 +243,7 @@ static void InsertPrintInst(Value *V, BasicBlock *BB, Instruction *InsertBefore,
   GlobalVariable *fmtVal = getStringRef(Mod, Message+getPrintfCodeFor(V)+"\n");
 
   // Turn the format string into an sbyte *
-  Constant *GEP =ConstantExpr::getGetElementPtr(ConstantPointerRef::get(fmtVal),
+  Constant *GEP=ConstantExpr::getGetElementPtr(fmtVal,
                 std::vector<Constant*>(2,Constant::getNullValue(Type::LongTy)));
   
   // Insert a call to the hash function if this is a pointer value
index bde4ff56b066a84c875f03c7d4153443c0f44e4b..835a5ae7892447385a4d257033a932d8b97947cb 100644 (file)
@@ -135,7 +135,7 @@ bool LowerInvoke::doInitialization(Module &M) {
     if (MsgGV) {
       std::vector<Constant*> GEPIdx(2, Constant::getNullValue(Type::LongTy));
       AbortMessage = 
-        ConstantExpr::getGetElementPtr(ConstantPointerRef::get(MsgGV), GEPIdx);
+        ConstantExpr::getGetElementPtr(MsgGV, GEPIdx);
     }
 
   } else {
@@ -154,7 +154,7 @@ bool LowerInvoke::doInitialization(Module &M) {
     if (MsgGV) {
       std::vector<Constant*> GEPIdx(2, Constant::getNullValue(Type::LongTy));
       AbortMessage =
-        ConstantExpr::getGetElementPtr(ConstantPointerRef::get(MsgGV), GEPIdx);
+        ConstantExpr::getGetElementPtr(MsgGV, GEPIdx);
     }
   }
 
@@ -191,7 +191,7 @@ void LowerInvoke::writeAbortMessage(Instruction *IB) {
                                                  WriteFn->getParent());
       std::vector<Constant*> GEPIdx(2, Constant::getNullValue(Type::LongTy));
       AbortMessage = 
-        ConstantExpr::getGetElementPtr(ConstantPointerRef::get(MsgGV), GEPIdx);
+        ConstantExpr::getGetElementPtr(MsgGV, GEPIdx);
     }
 
     // These are the arguments we WANT...
index 7a5fcff1117fdc21d75ecb51bce54a917b1730ad..9f525565271903833d69c051aa21e43f55c2df5d 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "ValueMapper.h"
 #include "llvm/Constants.h"
+#include "llvm/GlobalValue.h"
 #include "llvm/Instruction.h"
 #include <iostream>
 
@@ -32,9 +33,8 @@ Value *llvm::MapValue(const Value *V, std::map<const Value*, Value*> &VM) {
     if (isa<ConstantIntegral>(C) || isa<ConstantFP>(C) ||
         isa<ConstantPointerNull>(C) || isa<ConstantAggregateZero>(C))
       return VMSlot = C;           // Primitive constants map directly
-    else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(C)) {
-      GlobalValue *MV = cast<GlobalValue>(MapValue((Value*)CPR->getValue(),VM));
-      return VMSlot = ConstantPointerRef::get(MV);
+    else if (GlobalValue *GV = dyn_cast<GlobalValue>(C)) {
+      return VMSlot = GV;
     } else if (ConstantArray *CA = dyn_cast<ConstantArray>(C)) {
       const std::vector<Use> &Vals = CA->getValues();
       for (unsigned i = 0, e = Vals.size(); i != e; ++i) {
index 222e646522ed305330eb22fa7cdd80707de8fa86..2eedd60dd5f0bdb6c9f0ee8d2a2a69595cc2bd0f 100644 (file)
@@ -654,8 +654,7 @@ static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test,
         // GetElementPtr *funcName, ulong 0, ulong 0
         std::vector<Constant*> GEPargs(2,Constant::getNullValue(Type::IntTy));
         Value *GEP =
-          ConstantExpr::getGetElementPtr(ConstantPointerRef::get(funcName),
-                                         GEPargs);
+          ConstantExpr::getGetElementPtr(funcName, GEPargs);
         std::vector<Value*> ResolverArgs;
         ResolverArgs.push_back(GEP);