LLVM API Documentation
00001 //===- Transforms/Instrumentation.h - Instrumentation passes ----*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by the LLVM research group and is distributed under 00006 // the University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This files defines constructor functions for instrumentation passes. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef LLVM_TRANSFORMS_INSTRUMENTATION_H 00015 #define LLVM_TRANSFORMS_INSTRUMENTATION_H 00016 00017 namespace llvm { 00018 00019 class ModulePass; 00020 class FunctionPass; 00021 00022 // Reoptimizer support pass: add instrumentation calls to back-edges of loops 00023 FunctionPass *createLoopInstrumentationPass (); 00024 00025 // Reoptimizer support pass: combine multiple back-edges w/ same target into one 00026 FunctionPass *createCombineBranchesPass(); 00027 00028 // Reoptimizer support pass: emit table of global functions 00029 ModulePass *createEmitFunctionTablePass (); 00030 00031 // Reoptimizer support pass: insert function profiling instrumentation 00032 ModulePass *createFunctionProfilerPass(); 00033 00034 // Reoptimizer support pass: insert block profiling instrumentation 00035 ModulePass *createBlockProfilerPass(); 00036 00037 // Reoptimizer support pass: insert edge profiling instrumentation 00038 ModulePass *createEdgeProfilerPass(); 00039 00040 // Reoptimizer support pass: insert basic block tracing instrumentation 00041 ModulePass *createTraceBasicBlockPass(); 00042 00043 // Reoptimizer support pass: insert counting of execute paths instrumentation 00044 FunctionPass *createProfilePathsPass(); 00045 00046 // Random Sampling Profiling Framework 00047 ModulePass* createNullProfilerRSPass(); 00048 FunctionPass* createRSProfilingPass(); 00049 00050 00051 //===----------------------------------------------------------------------===// 00052 // Support for inserting LLVM code to print values at basic block and function 00053 // exits. 00054 // 00055 00056 // Just trace function entry/exit 00057 FunctionPass *createTraceValuesPassForBasicBlocks(); 00058 00059 // Trace BB's and methods 00060 FunctionPass *createTraceValuesPassForFunction(); 00061 00062 } // End llvm namespace 00063 00064 #endif