diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-07-18 00:44:37 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-07-18 00:44:37 +0000 |
commit | 518310cb0d136906ff0a99d7a24cb460794de5bf (patch) | |
tree | d8ad6b32edf261c90ce2c190f4c74dc3d044502f /lib/Transforms | |
parent | 593eb952281138e1877adbfb11b88b6e32fdd732 (diff) |
bug 122:
- Replace ConstantPointerRef usage with GlobalValue usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14953 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/IPO/FunctionResolution.cpp | 10 | ||||
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/IPO/Inliner.cpp | 7 | ||||
-rw-r--r-- | lib/Transforms/IPO/RaiseAllocations.cpp | 12 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/BlockProfiling.cpp | 8 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/EdgeProfiling.cpp | 6 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/EmitFunctions.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/ProfilingUtils.cpp | 5 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/ProfilingUtils.h | 2 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/TraceValues.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LowerInvoke.cpp | 6 | ||||
-rw-r--r-- | lib/Transforms/Utils/ValueMapper.cpp | 6 |
12 files changed, 30 insertions, 40 deletions
diff --git a/lib/Transforms/IPO/FunctionResolution.cpp b/lib/Transforms/IPO/FunctionResolution.cpp index 303cad1e7d..695287f7c4 100644 --- a/lib/Transforms/IPO/FunctionResolution.cpp +++ b/lib/Transforms/IPO/FunctionResolution.cpp @@ -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()) diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index c30ec5f47c..3478d9de41 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -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; diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp index 8fca96812b..ed5efe22ac 100644 --- a/lib/Transforms/IPO/Inliner.cpp +++ b/lib/Transforms/IPO/Inliner.cpp @@ -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. diff --git a/lib/Transforms/IPO/RaiseAllocations.cpp b/lib/Transforms/IPO/RaiseAllocations.cpp index 5302d8f7a1..ca8b7cc553 100644 --- a/lib/Transforms/IPO/RaiseAllocations.cpp +++ b/lib/Transforms/IPO/RaiseAllocations.cpp @@ -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()); diff --git a/lib/Transforms/Instrumentation/BlockProfiling.cpp b/lib/Transforms/Instrumentation/BlockProfiling.cpp index b7c19e6e09..e357e841cd 100644 --- a/lib/Transforms/Instrumentation/BlockProfiling.cpp +++ b/lib/Transforms/Instrumentation/BlockProfiling.cpp @@ -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); diff --git a/lib/Transforms/Instrumentation/EdgeProfiling.cpp b/lib/Transforms/Instrumentation/EdgeProfiling.cpp index ef334f22f3..c584ca5dfe 100644 --- a/lib/Transforms/Instrumentation/EdgeProfiling.cpp +++ b/lib/Transforms/Instrumentation/EdgeProfiling.cpp @@ -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); } } } diff --git a/lib/Transforms/Instrumentation/EmitFunctions.cpp b/lib/Transforms/Instrumentation/EmitFunctions.cpp index 27c2587546..a1c23dab23 100644 --- a/lib/Transforms/Instrumentation/EmitFunctions.cpp +++ b/lib/Transforms/Instrumentation/EmitFunctions.cpp @@ -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++; diff --git a/lib/Transforms/Instrumentation/ProfilingUtils.cpp b/lib/Transforms/Instrumentation/ProfilingUtils.cpp index 3c22b4bf42..1c0c4ada32 100644 --- a/lib/Transforms/Instrumentation/ProfilingUtils.cpp +++ b/lib/Transforms/Instrumentation/ProfilingUtils.cpp @@ -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)) diff --git a/lib/Transforms/Instrumentation/ProfilingUtils.h b/lib/Transforms/Instrumentation/ProfilingUtils.h index 17e234806c..c6d1b73928 100644 --- a/lib/Transforms/Instrumentation/ProfilingUtils.h +++ b/lib/Transforms/Instrumentation/ProfilingUtils.h @@ -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 diff --git a/lib/Transforms/Instrumentation/TraceValues.cpp b/lib/Transforms/Instrumentation/TraceValues.cpp index 30904a627e..6cc46fa6c6 100644 --- a/lib/Transforms/Instrumentation/TraceValues.cpp +++ b/lib/Transforms/Instrumentation/TraceValues.cpp @@ -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 diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp index bde4ff56b0..835a5ae789 100644 --- a/lib/Transforms/Utils/LowerInvoke.cpp +++ b/lib/Transforms/Utils/LowerInvoke.cpp @@ -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... diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 7a5fcff111..9f52556527 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -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) { |