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