From: Brian Gaeke Date: Wed, 19 May 2004 09:08:12 +0000 (+0000) Subject: Move RemapInstruction() to ValueMapper, so that it can be shared with X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6129af3fb14d1050f9fb4800c787e6f930b910d1;p=oota-llvm.git 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 --- diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp index f5ea66047a1..7bd37315602 100644 --- a/lib/Transforms/Utils/CloneFunction.cpp +++ b/lib/Transforms/Utils/CloneFunction.cpp @@ -20,25 +20,6 @@ #include "ValueMapper.h" using namespace llvm; -// RemapInstruction - Convert the instruction operands from referencing the -// current values into those specified by ValueMap. -// -static inline void RemapInstruction(Instruction *I, - std::map &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); - } -} - // CloneBasicBlock - See comments in Cloning.h BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, std::map &ValueMap, diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 2cb6a9d221d..abf9957eb13 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 &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 &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); + } +} diff --git a/lib/Transforms/Utils/ValueMapper.h b/lib/Transforms/Utils/ValueMapper.h index 941a8b3c5db..a0ad5c36009 100644 --- a/lib/Transforms/Utils/ValueMapper.h +++ b/lib/Transforms/Utils/ValueMapper.h @@ -12,14 +12,18 @@ // //===----------------------------------------------------------------------===// -#ifndef LIB_TRANSFORMS_UTILS_VALUE_MAPPER_H -#define LIB_TRANSFORMS_UTILS_VALUE_MAPPER_H +#ifndef VALUEMAPPER_H +#define VALUEMAPPER_H #include namespace llvm { class Value; - Value *MapValue(const Value *V, std::map &VM); + class Instruction; + typedef std::map ValueMapTy; + + Value *MapValue(const Value *V, ValueMapTy &VM); + void RemapInstruction(Instruction *I, ValueMapTy &VM); } // End llvm namespace #endif