Home | History | Annotate | Download | only in Instrumentation
      1 //===- ProfilingUtils.h - Helper functions shared by profilers --*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file defines a few helper functions which are used by profile
     11 // instrumentation code to instrument the code.  This allows the profiler pass
     12 // to worry about *what* to insert, and these functions take care of *how* to do
     13 // it.
     14 //
     15 //===----------------------------------------------------------------------===//
     16 
     17 #ifndef PROFILINGUTILS_H
     18 #define PROFILINGUTILS_H
     19 
     20 namespace llvm {
     21   class BasicBlock;
     22   class Function;
     23   class GlobalValue;
     24   class Module;
     25   class PointerType;
     26 
     27   void InsertProfilingInitCall(Function *MainFn, const char *FnName,
     28                                GlobalValue *Arr = 0,
     29                                PointerType *arrayType = 0);
     30   void IncrementCounterInBlock(BasicBlock *BB, unsigned CounterNum,
     31                                GlobalValue *CounterArray,
     32                                bool beginning = true);
     33   void InsertProfilingShutdownCall(Function *Callee, Module *Mod);
     34 }
     35 
     36 #endif
     37