Home | History | Annotate | Download | only in Analysis
      1 /*===-- ProfileInfoTypes.h - Profiling info shared constants --------------===*\
      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 constants shared by the various different profiling
     11 |* runtime libraries and the LLVM C++ profile info loader. It must be a
     12 |* C header because, at present, the profiling runtimes are written in C.
     13 |*
     14 \*===----------------------------------------------------------------------===*/
     15 
     16 #ifndef LLVM_ANALYSIS_PROFILEINFOTYPES_H
     17 #define LLVM_ANALYSIS_PROFILEINFOTYPES_H
     18 
     19 /* Included by libprofile. */
     20 #if defined(__cplusplus)
     21 extern "C" {
     22 #endif
     23 
     24 /* IDs to distinguish between those path counters stored in hashses vs arrays */
     25 enum ProfilingStorageType {
     26   ProfilingArray = 1,
     27   ProfilingHash = 2
     28 };
     29 
     30 enum ProfilingType {
     31   ArgumentInfo  = 1,   /* The command line argument block */
     32   FunctionInfo  = 2,   /* Function profiling information  */
     33   BlockInfo     = 3,   /* Block profiling information     */
     34   EdgeInfo      = 4,   /* Edge profiling information      */
     35   PathInfo      = 5,   /* Path profiling information      */
     36   BBTraceInfo   = 6,   /* Basic block trace information   */
     37   OptEdgeInfo   = 7    /* Edge profiling information, optimal version */
     38 };
     39 
     40 /*
     41  * The header for tables that map path numbers to path counters.
     42  */
     43 typedef struct {
     44   unsigned fnNumber; /* function number for these counters */
     45   unsigned numEntries;   /* number of entries stored */
     46 } PathProfileHeader;
     47 
     48 /*
     49  * Describes an entry in a tagged table for path counters.
     50  */
     51 typedef struct {
     52   unsigned pathNumber;
     53   unsigned pathCounter;
     54 } PathProfileTableEntry;
     55 
     56 #if defined(__cplusplus)
     57 }
     58 #endif
     59 
     60 #endif /* LLVM_ANALYSIS_PROFILEINFOTYPES_H */
     61