aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2001-10-14 23:19:02 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2001-10-14 23:19:02 +0000
commitbc4ecce4a99d230fe3e17861ebe54b3622e61335 (patch)
tree38551f3ad3bc2d6ea3d1b2b120d4443671eed8f5
parentdf1892fee24fe1f051c77df196ae14d3e24afaf3 (diff)
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
-rw-r--r--include/llvm/Transforms/Instrumentation/TraceValues.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/include/llvm/Transforms/Instrumentation/TraceValues.h b/include/llvm/Transforms/Instrumentation/TraceValues.h
new file mode 100644
index 0000000000..af21209f10
--- /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