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 #include "llvm/Analysis/ProfileDataTypes.h"
     31 
     32 /*
     33  * The header for tables that map path numbers to path counters.
     34  */
     35 typedef struct {
     36   unsigned fnNumber; /* function number for these counters */
     37   unsigned numEntries;   /* number of entries stored */
     38 } PathProfileHeader;
     39 
     40 /*
     41  * Describes an entry in a tagged table for path counters.
     42  */
     43 typedef struct {
     44   unsigned pathNumber;
     45   unsigned pathCounter;
     46 } PathProfileTableEntry;
     47 
     48 #if defined(__cplusplus)
     49 }
     50 #endif
     51 
     52 #endif /* LLVM_ANALYSIS_PROFILEINFOTYPES_H */
     53