45aab5b70d2b1c39536b7a08eff760d40c03a6e5
[oota-llvm.git] / include / llvm / Analysis / ProfileInfoTypes.h
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 */