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)
21extern "C" {
22#endif
23
24/* IDs to distinguish between those path counters stored in hashses vs arrays */
25enum 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 */
35typedef 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 */
43typedef 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