Move RemapInstruction() to ValueMapper, so that it can be shared with
authorBrian Gaeke <gaeke@uiuc.edu>
Wed, 19 May 2004 09:08:12 +0000 (09:08 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Wed, 19 May 2004 09:08:12 +0000 (09:08 +0000)
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

lib/Transforms/Utils/CloneFunction.cpp
lib/Transforms/Utils/ValueMapper.cpp
lib/Transforms/Utils/ValueMapper.h

index f5ea66047a1f31da6be1531d6f0e30a9dd087bec..7bd3731560262f5eea89465713244e0a50ee4d20 100644 (file)
 #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,
index 2cb6a9d221d4a9cf704de74d47b662b629e732b5..abf9957eb134ea2e37a885c611cafd3765c874b1 100644 (file)
@@ -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);
+  }
+}
index 941a8b3c5db69d70dcd8b4f170c45660a9b7f380..a0ad5c360091ffc5ca182ed875f7762a7881cb6b 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
-#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