• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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