GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
dumpfile.h
Go to the documentation of this file.
1
/* Definitions for the shared dumpfile.
2
Copyright (C) 2004-2013 Free Software Foundation, Inc.
3
4
This file is part of GCC.
5
6
GCC is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 3, or (at your option)
9
any later version.
10
11
GCC is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3. If not see
18
<http://www.gnu.org/licenses/>. */
19
20
21
#ifndef GCC_DUMPFILE_H
22
#define GCC_DUMPFILE_H 1
23
24
#include "line-map.h"
25
26
/* Different tree dump places. When you add new tree dump places,
27
extend the DUMP_FILES array in dumpfile.c. */
28
enum
tree_dump_index
29
{
30
TDI_none
,
/* No dump */
31
TDI_cgraph
,
/* dump function call graph. */
32
TDI_inheritance
,
/* dump type inheritance graph. */
33
TDI_tu
,
/* dump the whole translation unit. */
34
TDI_class
,
/* dump class hierarchy. */
35
TDI_original
,
/* dump each function before optimizing it */
36
TDI_generic
,
/* dump each function after genericizing it */
37
TDI_nested
,
/* dump each function after unnesting it */
38
TDI_tree_all
,
/* enable all the GENERIC/GIMPLE dumps. */
39
TDI_rtl_all
,
/* enable all the RTL dumps. */
40
TDI_ipa_all
,
/* enable all the IPA dumps. */
41
42
TDI_end
43
};
44
45
/* Bit masks to control dumping. Not all values are applicable to all
46
dumps. Add new ones at the end. When you define new values, extend
47
the DUMP_OPTIONS array in dumpfile.c. The TDF_* flags coexist with
48
MSG_* flags (for -fopt-info) and the bit values must be chosen to
49
allow that. */
50
#define TDF_ADDRESS (1 << 0)
/* dump node addresses */
51
#define TDF_SLIM (1 << 1)
/* don't go wild following links */
52
#define TDF_RAW (1 << 2)
/* don't unparse the function */
53
#define TDF_DETAILS (1 << 3)
/* show more detailed info about
54
each pass */
55
#define TDF_STATS (1 << 4)
/* dump various statistics about
56
each pass */
57
#define TDF_BLOCKS (1 << 5)
/* display basic block boundaries */
58
#define TDF_VOPS (1 << 6)
/* display virtual operands */
59
#define TDF_LINENO (1 << 7)
/* display statement line numbers */
60
#define TDF_UID (1 << 8)
/* display decl UIDs */
61
62
#define TDF_TREE (1 << 9)
/* is a tree dump */
63
#define TDF_RTL (1 << 10)
/* is a RTL dump */
64
#define TDF_IPA (1 << 11)
/* is an IPA dump */
65
#define TDF_STMTADDR (1 << 12)
/* Address of stmt. */
66
67
#define TDF_GRAPH (1 << 13)
/* a graph dump is being emitted */
68
#define TDF_MEMSYMS (1 << 14)
/* display memory symbols in expr.
69
Implies TDF_VOPS. */
70
71
#define TDF_DIAGNOSTIC (1 << 15)
/* A dump to be put in a diagnostic
72
message. */
73
#define TDF_VERBOSE (1 << 16)
/* A dump that uses the full tree
74
dumper to print stmts. */
75
#define TDF_RHS_ONLY (1 << 17)
/* a flag to only print the RHS of
76
a gimple stmt. */
77
#define TDF_ASMNAME (1 << 18)
/* display asm names of decls */
78
#define TDF_EH (1 << 19)
/* display EH region number
79
holding this gimple statement. */
80
#define TDF_NOUID (1 << 20)
/* omit UIDs from dumps. */
81
#define TDF_ALIAS (1 << 21)
/* display alias information */
82
#define TDF_ENUMERATE_LOCALS (1 << 22)
/* Enumerate locals by uid. */
83
#define TDF_CSELIB (1 << 23)
/* Dump cselib details. */
84
#define TDF_SCEV (1 << 24)
/* Dump SCEV details. */
85
#define TDF_COMMENT (1 << 25)
/* Dump lines with prefix ";;" */
86
#define MSG_OPTIMIZED_LOCATIONS (1 << 26)
/* -fopt-info optimized sources */
87
#define MSG_MISSED_OPTIMIZATION (1 << 27)
/* missed opportunities */
88
#define MSG_NOTE (1 << 28)
/* general optimization info */
89
#define MSG_ALL (MSG_OPTIMIZED_LOCATIONS | MSG_MISSED_OPTIMIZATION \
90
| MSG_NOTE)
91
92
93
/* Flags to control high-level -fopt-info dumps. Usually these flags
94
define a group of passes. An optimization pass can be part of
95
multiple groups. */
96
#define OPTGROUP_NONE (0)
97
#define OPTGROUP_IPA (1 << 1)
/* IPA optimization passes */
98
#define OPTGROUP_LOOP (1 << 2)
/* Loop optimization passes */
99
#define OPTGROUP_INLINE (1 << 3)
/* Inlining passes */
100
#define OPTGROUP_VEC (1 << 4)
/* Vectorization passes */
101
#define OPTGROUP_ALL (OPTGROUP_IPA | OPTGROUP_LOOP | OPTGROUP_INLINE \
102
| OPTGROUP_VEC)
103
104
/* Define a tree dump switch. */
105
struct
dump_file_info
106
{
107
const
char
*
suffix
;
/* suffix to give output file. */
108
const
char
*
swtch
;
/* command line dump switch */
109
const
char
*
glob
;
/* command line glob */
110
const
char
*
pfilename
;
/* filename for the pass-specific stream */
111
const
char
*
alt_filename
;
/* filename for the -fopt-info stream */
112
FILE *
pstream
;
/* pass-specific dump stream */
113
FILE *
alt_stream
;
/* -fopt-info stream */
114
int
pflags
;
/* dump flags */
115
int
optgroup_flags
;
/* optgroup flags for -fopt-info */
116
int
alt_flags
;
/* flags for opt-info */
117
int
pstate
;
/* state of pass-specific stream */
118
int
alt_state
;
/* state of the -fopt-info stream */
119
int
num
;
/* dump file number */
120
};
121
122
/* In dumpfile.c */
123
extern
char
*
get_dump_file_name
(
int
);
124
extern
int
dump_initialized_p
(
int
);
125
extern
FILE *
dump_begin
(
int
,
int
*);
126
extern
void
dump_end
(
int
, FILE *);
127
extern
int
dump_start
(
int
,
int
*);
128
extern
void
dump_finish
(
int
);
129
extern
int
dump_switch_p
(
const
char
*);
130
extern
int
opt_info_switch_p
(
const
char
*);
131
extern
const
char
*
dump_flag_name
(
int
);
132
extern
void
dump_printf
(
int
,
const
char
*, ...) ATTRIBUTE_PRINTF_2;
133
extern
void
dump_printf_loc
(
int
, source_location,
134
const
char
*, ...) ATTRIBUTE_PRINTF_3;
135
extern
void
dump_basic_block
(
int
,
basic_block
,
int
);
136
extern
void
dump_generic_expr_loc
(
int
, source_location,
int
,
tree
);
137
extern
void
dump_generic_expr
(
int
,
int
, tree);
138
extern
void
dump_gimple_stmt_loc
(
int
, source_location,
int
,
gimple
,
int
);
139
extern
void
dump_gimple_stmt
(
int
,
int
, gimple,
int
);
140
extern
void
print_combine_total_stats
(
void
);
141
extern
unsigned
int
dump_register
(const
char
*, const
char
*, const
char
*,
142
int
,
int
);
143
extern
bool
enable_rtl_dump_file
(
void
);
144
145
/* In tree-dump.c */
146
extern
void
dump_node
(
const_tree
,
int
, FILE *);
147
148
/* In combine.c */
149
extern
void
dump_combine_total_stats
(FILE *);
150
/* In cfghooks.c */
151
extern
void
dump_bb
(FILE *, basic_block,
int
,
int
);
152
153
/* Global variables used to communicate with passes. */
154
extern FILE *
dump_file
;
155
extern FILE *
alt_dump_file
;
156
extern
int
dump_flags
;
157
extern const
char
*
dump_file_name
;
158
159
/* Return the dump_file_info for the given phase. */
160
extern struct
dump_file_info
*
get_dump_file_info
(
int
);
161
162
/* Return true if any of the dumps is enabled, false otherwise. */
163
static inline
bool
164
dump_enabled_p
(
void
)
165
{
166
return
(dump_file || alt_dump_file);
167
}
168
169
#endif
/* GCC_DUMPFILE_H */
gcc
dumpfile.h
Generated by
1.8.1.1