summaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils
diff options
context:
space:
mode:
authorBrian Gaeke <gaeke@uiuc.edu>2004-05-19 09:08:12 +0000
committerBrian Gaeke <gaeke@uiuc.edu>2004-05-19 09:08:12 +0000
commit6129af3fb14d1050f9fb4800c787e6f930b910d1 (patch)
treec602968fe8e371e6c15618e06aadcde90269002b /lib/Transforms/Utils
parenta4c6c522ee029e97aedccb6ee7cca912d52a5599 (diff)
downloadllvm-6129af3fb14d1050f9fb4800c787e6f930b910d1.tar.gz
llvm-6129af3fb14d1050f9fb4800c787e6f930b910d1.tar.bz2
llvm-6129af3fb14d1050f9fb4800c787e6f930b910d1.tar.xz
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')
-rw-r--r--lib/Transforms/Utils/CloneFunction.cpp19
-rw-r--r--lib/Transforms/Utils/ValueMapper.cpp19
-rw-r--r--lib/Transforms/Utils/ValueMapper.h10
3 files changed, 26 insertions, 22 deletions
diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp
index f5ea66047a..7bd3731560 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<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);
- }
-}
-
// CloneBasicBlock - See comments in Cloning.h
BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB,
std::map<const Value*, Value*> &ValueMap,
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);
+ }
+}
diff --git a/lib/Transforms/Utils/ValueMapper.h b/lib/Transforms/Utils/ValueMapper.h
index 941a8b3c5d..a0ad5c3600 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 <map>
namespace llvm {
class Value;
- Value *MapValue(const Value *V, std::map<const Value*, Value*> &VM);
+ class Instruction;
+ typedef std::map<const Value *, Value *> ValueMapTy;
+
+ Value *MapValue(const Value *V, ValueMapTy &VM);
+ void RemapInstruction(Instruction *I, ValueMapTy &VM);
} // End llvm namespace
#endif