Insert code to trace values at basic block and method exits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@801 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vikram S. Adve 2001-10-14 23:19:02 +00:00
parent df1892fee2
commit bc4ecce4a9

View File

@ -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