[llvm-commits] CVS: llvm/include/llvm/Transforms/Utils/Cloning.h

Chris Lattner lattner at cs.uiuc.edu
Tue Nov 19 16:55:02 PST 2002


Changes in directory llvm/include/llvm/Transforms/Utils:

Cloning.h updated: 1.2 -> 1.3

---
Log message:

Minor changes to cloning interface


---
Diffs of the changes:

Index: llvm/include/llvm/Transforms/Utils/Cloning.h
diff -u llvm/include/llvm/Transforms/Utils/Cloning.h:1.2 llvm/include/llvm/Transforms/Utils/Cloning.h:1.3
--- llvm/include/llvm/Transforms/Utils/Cloning.h:1.2	Tue Nov 19 15:54:38 2002
+++ llvm/include/llvm/Transforms/Utils/Cloning.h	Tue Nov 19 16:53:58 2002
@@ -12,6 +12,7 @@
 #define LLVM_TRANSFORMS_UTIlS_CLONING_H
 
 #include <vector>
+#include <map>
 class Module;
 class Function;
 class BasicBlock;
@@ -19,6 +20,28 @@
 class CallInst;
 class ReturnInst;
 
+/// CloneModule - Return an exact copy of the specified module
+///
+Module *CloneModule(Module *M);
+
+/// CloneFunction - Return a copy of the specified function, but without
+/// embedding the function into another module.  Also, any references specified
+/// in the ValueMap are changed to refer to their mapped value instead of the
+/// original one.  If any of the arguments to the function are in the ValueMap,
+/// the arguments are deleted from the resultant function.  The ValueMap is
+/// updated to include mappings from all of the instructions and basicblocks in
+/// the function from their old to new values.
+///
+Function *CloneFunction(const Function *F,
+                        std::map<const Value*, Value*> &ValueMap);
+
+/// CloneFunction - Version of the function that doesn't need the ValueMap.
+///
+inline Function *CloneFunction(const Function *F) {
+  std::map<const Value*, Value*> ValueMap;
+  return CloneFunction(F, ValueMap);
+}
+
 // Clone OldFunc into NewFunc, transforming the old arguments into references to
 // ArgMap values.  Note that if NewFunc already has basic blocks, the ones
 // cloned into it will be added to the end of the function.  This function fills
@@ -26,7 +49,7 @@
 // suffix to all values cloned.
 //
 void CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
-                       const std::vector<Value*> &ArgMap,
+                       std::map<const Value*, Value*> &ValueMap,
                        std::vector<ReturnInst*> &Returns,
                        const char *NameSuffix = "");
 





More information about the llvm-commits mailing list