Refactor trace values to work as a proper pass. Before it used to add
authorChris Lattner <sabre@nondot.org>
Fri, 14 Dec 2001 16:23:53 +0000 (16:23 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 14 Dec 2001 16:23:53 +0000 (16:23 +0000)
methods while the pass was running which was a no no.  Now it adds the
printf method at pass initialization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1456 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/Instrumentation/TraceValues.h

index d4e2edd5ddd34f49884d9ffe8881bfe90cd0dba8..13847161f10f754ccb7548c2d8e690d141d61556 100644 (file)
@@ -9,14 +9,19 @@
 #define LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H
 
 #include "llvm/Pass.h"
+class Method;
 
 class InsertTraceCode : public Pass {
   bool TraceBasicBlockExits, TraceMethodExits;
+  Method *PrintfMeth;
 public:
   InsertTraceCode(bool traceBasicBlockExits, bool traceMethodExits)
     : TraceBasicBlockExits(traceBasicBlockExits), 
       TraceMethodExits(traceMethodExits) {}
 
+  // Add a prototype for printf if it is not already in the program.
+  //
+  bool doPassInitialization(Module *M);
 
   //--------------------------------------------------------------------------
   // Function InsertCodeToTraceValues
@@ -24,14 +29,14 @@ public:
   // Inserts tracing code for all live values at basic block and/or method exits
   // as specified by `traceBasicBlockExits' and `traceMethodExits'.
   //
-  static bool doInsertTraceCode(Method *M, bool traceBasicBlockExits,
-                                bool traceMethodExits);
+  static bool doit(Method *M, bool traceBasicBlockExits,
+                   bool traceMethodExits, Method *Printf);
 
   // doPerMethodWork - This method does the work.  Always successful.
   //
   bool doPerMethodWork(Method *M) {
-    return doInsertTraceCode(M, TraceBasicBlockExits, TraceMethodExits);
+    return doit(M, TraceBasicBlockExits, TraceMethodExits, PrintfMeth);
   }
 };
 
-#endif /*LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H*/
+#endif