diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2004-05-19 09:08:12 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-05-19 09:08:12 +0000 |
commit | 6129af3fb14d1050f9fb4800c787e6f930b910d1 (patch) | |
tree | c602968fe8e371e6c15618e06aadcde90269002b /lib/Transforms/Utils/ValueMapper.cpp | |
parent | a4c6c522ee029e97aedccb6ee7cca912d52a5599 (diff) |
Move RemapInstruction() to ValueMapper, so that it can be shared with
CloneTrace, and because it is primarily an operation on ValueMaps. It
is now a global (non-static) function which can be pulled in using
ValueMapper.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13600 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r-- | lib/Transforms/Utils/ValueMapper.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 2cb6a9d221..abf9957eb1 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -99,3 +99,22 @@ Value *llvm::MapValue(const Value *V, std::map<const Value*, Value*> &VM) { assert(0 && "Unknown value type: why didn't it get resolved?!"); return 0; } + +/// RemapInstruction - Convert the instruction operands from referencing the +/// current values into those specified by ValueMap. +/// +void llvm::RemapInstruction(Instruction *I, + std::map<const Value *, Value*> &ValueMap) { + for (unsigned op = 0, E = I->getNumOperands(); op != E; ++op) { + const Value *Op = I->getOperand(op); + Value *V = MapValue(Op, ValueMap); +#ifndef NDEBUG + if (!V) { + std::cerr << "Val = \n" << Op << "Addr = " << (void*)Op; + std::cerr << "\nInst = " << I; + } +#endif + assert(V && "Referenced value not in value map!"); + I->setOperand(op, V); + } +} |