Refactor trace values to work as a proper pass. Before it used to add
methods while the pass was running which was a no no. Now it adds the printf method at pass initialization llvm-svn: 1456
This commit is contained in:
parent
8ddb00c804
commit
7c84dc6abb
|
@ -9,14 +9,19 @@
|
||||||
#define LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H
|
#define LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H
|
||||||
|
|
||||||
#include "llvm/Pass.h"
|
#include "llvm/Pass.h"
|
||||||
|
class Method;
|
||||||
|
|
||||||
class InsertTraceCode : public Pass {
|
class InsertTraceCode : public Pass {
|
||||||
bool TraceBasicBlockExits, TraceMethodExits;
|
bool TraceBasicBlockExits, TraceMethodExits;
|
||||||
|
Method *PrintfMeth;
|
||||||
public:
|
public:
|
||||||
InsertTraceCode(bool traceBasicBlockExits, bool traceMethodExits)
|
InsertTraceCode(bool traceBasicBlockExits, bool traceMethodExits)
|
||||||
: TraceBasicBlockExits(traceBasicBlockExits),
|
: TraceBasicBlockExits(traceBasicBlockExits),
|
||||||
TraceMethodExits(traceMethodExits) {}
|
TraceMethodExits(traceMethodExits) {}
|
||||||
|
|
||||||
|
// Add a prototype for printf if it is not already in the program.
|
||||||
|
//
|
||||||
|
bool doPassInitialization(Module *M);
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
// Function InsertCodeToTraceValues
|
// Function InsertCodeToTraceValues
|
||||||
|
@ -24,14 +29,14 @@ public:
|
||||||
// Inserts tracing code for all live values at basic block and/or method exits
|
// Inserts tracing code for all live values at basic block and/or method exits
|
||||||
// as specified by `traceBasicBlockExits' and `traceMethodExits'.
|
// as specified by `traceBasicBlockExits' and `traceMethodExits'.
|
||||||
//
|
//
|
||||||
static bool doInsertTraceCode(Method *M, bool traceBasicBlockExits,
|
static bool doit(Method *M, bool traceBasicBlockExits,
|
||||||
bool traceMethodExits);
|
bool traceMethodExits, Method *Printf);
|
||||||
|
|
||||||
// doPerMethodWork - This method does the work. Always successful.
|
// doPerMethodWork - This method does the work. Always successful.
|
||||||
//
|
//
|
||||||
bool doPerMethodWork(Method *M) {
|
bool doPerMethodWork(Method *M) {
|
||||||
return doInsertTraceCode(M, TraceBasicBlockExits, TraceMethodExits);
|
return doit(M, TraceBasicBlockExits, TraceMethodExits, PrintfMeth);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H*/
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue