diff --git a/include/llvm/Transforms/Instrumentation/TraceValues.h b/include/llvm/Transforms/Instrumentation/TraceValues.h new file mode 100644 index 00000000000..af21209f10d --- /dev/null +++ b/include/llvm/Transforms/Instrumentation/TraceValues.h @@ -0,0 +1,75 @@ +// $Id$ -*-c++-*- +//*************************************************************************** +// File: +// TraceValues.h +// +// Purpose: +// Support for inserting LLVM code to print values at basic block +// and method exits. Also exports functions to create a call +// "printf" instruction with one of the signatures listed below. +// +// History: +// 10/11/01 - Vikram Adve - Created +//**************************************************************************/ + +#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H +#define LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H + +class Module; +class Method; +class BasicBlock; +class Instruction; +class Value; +class Type; + + +//************************** External Functions ****************************/ + + +//-------------------------------------------------------------------------- +// Function GetPrintMethodForType +// +// Creates an external declaration for "printf". +// The signatures supported are: +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, int intValue) +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, unsigned uintValue) +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, float floatValue) +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, double doubleValue) +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, char* stringValue) +// int printf(sbyte*, sbyte*, sbyte*, sbyte*, void* ptrValue) +// +// The invocation should be: +// call "printf"(fmt, bbName, valueName, valueType, value). +//-------------------------------------------------------------------------- + +const Method* GetPrintMethodForType (Module* module, + Type* vtype); + + +//-------------------------------------------------------------------------- +// Function CreatePrintInstr +// +// Creates an invocation of printf for the value `val' at the exit of the +// basic block `bb'. isMethodExit specifies if this is a method exit, +//-------------------------------------------------------------------------- + +Instruction* CreatePrintInstr (Value* val, + const BasicBlock* bb, + Module* module, + unsigned int indent, + bool isMethodExit); + +//-------------------------------------------------------------------------- +// Function InsertCodeToTraceValues +// +// Inserts tracing code for all live values at basic block and/or method exits +// as specified by `traceBasicBlockExits' and `traceMethodExits'. +//-------------------------------------------------------------------------- + +void InsertCodeToTraceValues (Method* method, + bool traceBasicBlockExits, + bool traceMethodExits); + +//**************************************************************************/ + +#endif LLVM_TRANSFORMS_INSTRUMENTATION_TRACEVALUES_H