Mercurial > hg > CbC > CbC_gcc
comparison gcc/flag-types.h @ 68:561a7518be6b
update gcc-4.6
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 21 Aug 2011 07:07:55 +0900 |
parents | |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
67:f6334be47118 | 68:561a7518be6b |
---|---|
1 /* Compilation switch flag type definitions for GCC. | |
2 Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, | |
3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | |
4 Free Software Foundation, Inc. | |
5 | |
6 This file is part of GCC. | |
7 | |
8 GCC is free software; you can redistribute it and/or modify it under | |
9 the terms of the GNU General Public License as published by the Free | |
10 Software Foundation; either version 3, or (at your option) any later | |
11 version. | |
12 | |
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GCC; see the file COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 | |
22 #ifndef GCC_FLAG_TYPES_H | |
23 #define GCC_FLAG_TYPES_H | |
24 | |
25 enum debug_info_type | |
26 { | |
27 NO_DEBUG, /* Write no debug info. */ | |
28 DBX_DEBUG, /* Write BSD .stabs for DBX (using dbxout.c). */ | |
29 SDB_DEBUG, /* Write COFF for (old) SDB (using sdbout.c). */ | |
30 DWARF2_DEBUG, /* Write Dwarf v2 debug info (using dwarf2out.c). */ | |
31 XCOFF_DEBUG, /* Write IBM/Xcoff debug info (using dbxout.c). */ | |
32 VMS_DEBUG, /* Write VMS debug info (using vmsdbgout.c). */ | |
33 VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c). | |
34 and DWARF v2 debug info (using dwarf2out.c). */ | |
35 }; | |
36 | |
37 enum debug_info_levels | |
38 { | |
39 DINFO_LEVEL_NONE, /* Write no debugging info. */ | |
40 DINFO_LEVEL_TERSE, /* Write minimal info to support tracebacks only. */ | |
41 DINFO_LEVEL_NORMAL, /* Write info for all declarations (and line table). */ | |
42 DINFO_LEVEL_VERBOSE /* Write normal info plus #define/#undef info. */ | |
43 }; | |
44 | |
45 /* A major contribution to object and executable size is debug | |
46 information size. A major contribution to debug information | |
47 size is struct descriptions replicated in several object files. | |
48 The following function determines whether or not debug information | |
49 should be generated for a given struct. The indirect parameter | |
50 indicates that the struct is being handled indirectly, via | |
51 a pointer. See opts.c for the implementation. */ | |
52 | |
53 enum debug_info_usage | |
54 { | |
55 DINFO_USAGE_DFN, /* A struct definition. */ | |
56 DINFO_USAGE_DIR_USE, /* A direct use, such as the type of a variable. */ | |
57 DINFO_USAGE_IND_USE, /* An indirect use, such as through a pointer. */ | |
58 DINFO_USAGE_NUM_ENUMS /* The number of enumerators. */ | |
59 }; | |
60 | |
61 /* A major contribution to object and executable size is debug | |
62 information size. A major contribution to debug information size | |
63 is struct descriptions replicated in several object files. The | |
64 following flags attempt to reduce this information. The basic | |
65 idea is to not emit struct debugging information in the current | |
66 compilation unit when that information will be generated by | |
67 another compilation unit. | |
68 | |
69 Debug information for a struct defined in the current source | |
70 file should be generated in the object file. Likewise the | |
71 debug information for a struct defined in a header should be | |
72 generated in the object file of the corresponding source file. | |
73 Both of these case are handled when the base name of the file of | |
74 the struct definition matches the base name of the source file | |
75 of the current compilation unit. This matching emits minimal | |
76 struct debugging information. | |
77 | |
78 The base file name matching rule above will fail to emit debug | |
79 information for structs defined in system headers. So a second | |
80 category of files includes system headers in addition to files | |
81 with matching bases. | |
82 | |
83 The remaining types of files are library headers and application | |
84 headers. We cannot currently distinguish these two types. */ | |
85 | |
86 enum debug_struct_file | |
87 { | |
88 DINFO_STRUCT_FILE_NONE, /* Debug no structs. */ | |
89 DINFO_STRUCT_FILE_BASE, /* Debug structs defined in files with the | |
90 same base name as the compilation unit. */ | |
91 DINFO_STRUCT_FILE_SYS, /* Also debug structs defined in system | |
92 header files. */ | |
93 DINFO_STRUCT_FILE_ANY /* Debug structs defined in all files. */ | |
94 }; | |
95 | |
96 /* Enumerate visibility settings. This is deliberately ordered from most | |
97 to least visibility. */ | |
98 #ifndef SYMBOL_VISIBILITY_DEFINED | |
99 #define SYMBOL_VISIBILITY_DEFINED | |
100 enum symbol_visibility | |
101 { | |
102 VISIBILITY_DEFAULT, | |
103 VISIBILITY_PROTECTED, | |
104 VISIBILITY_HIDDEN, | |
105 VISIBILITY_INTERNAL | |
106 }; | |
107 #endif | |
108 | |
109 /* The algorithm used for the integrated register allocator (IRA). */ | |
110 enum ira_algorithm | |
111 { | |
112 IRA_ALGORITHM_CB, | |
113 IRA_ALGORITHM_PRIORITY | |
114 }; | |
115 | |
116 /* The regions used for the integrated register allocator (IRA). */ | |
117 enum ira_region | |
118 { | |
119 IRA_REGION_ONE, | |
120 IRA_REGION_ALL, | |
121 IRA_REGION_MIXED | |
122 }; | |
123 | |
124 /* The options for excess precision. */ | |
125 enum excess_precision | |
126 { | |
127 EXCESS_PRECISION_DEFAULT, | |
128 EXCESS_PRECISION_FAST, | |
129 EXCESS_PRECISION_STANDARD | |
130 }; | |
131 | |
132 /* Selection of the graph form. */ | |
133 enum graph_dump_types | |
134 { | |
135 no_graph = 0, | |
136 vcg | |
137 }; | |
138 | |
139 /* Type of stack check. */ | |
140 enum stack_check_type | |
141 { | |
142 /* Do not check the stack. */ | |
143 NO_STACK_CHECK = 0, | |
144 | |
145 /* Check the stack generically, i.e. assume no specific support | |
146 from the target configuration files. */ | |
147 GENERIC_STACK_CHECK, | |
148 | |
149 /* Check the stack and rely on the target configuration files to | |
150 check the static frame of functions, i.e. use the generic | |
151 mechanism only for dynamic stack allocations. */ | |
152 STATIC_BUILTIN_STACK_CHECK, | |
153 | |
154 /* Check the stack and entirely rely on the target configuration | |
155 files, i.e. do not use the generic mechanism at all. */ | |
156 FULL_BUILTIN_STACK_CHECK | |
157 }; | |
158 | |
159 /* Names for the different levels of -Wstrict-overflow=N. The numeric | |
160 values here correspond to N. */ | |
161 | |
162 enum warn_strict_overflow_code | |
163 { | |
164 /* Overflow warning that should be issued with -Wall: a questionable | |
165 construct that is easy to avoid even when using macros. Example: | |
166 folding (x + CONSTANT > x) to 1. */ | |
167 WARN_STRICT_OVERFLOW_ALL = 1, | |
168 /* Overflow warning about folding a comparison to a constant because | |
169 of undefined signed overflow, other than cases covered by | |
170 WARN_STRICT_OVERFLOW_ALL. Example: folding (abs (x) >= 0) to 1 | |
171 (this is false when x == INT_MIN). */ | |
172 WARN_STRICT_OVERFLOW_CONDITIONAL = 2, | |
173 /* Overflow warning about changes to comparisons other than folding | |
174 them to a constant. Example: folding (x + 1 > 1) to (x > 0). */ | |
175 WARN_STRICT_OVERFLOW_COMPARISON = 3, | |
176 /* Overflow warnings not covered by the above cases. Example: | |
177 folding ((x * 10) / 5) to (x * 2). */ | |
178 WARN_STRICT_OVERFLOW_MISC = 4, | |
179 /* Overflow warnings about reducing magnitude of constants in | |
180 comparison. Example: folding (x + 2 > y) to (x + 1 >= y). */ | |
181 WARN_STRICT_OVERFLOW_MAGNITUDE = 5 | |
182 }; | |
183 | |
184 /* Floating-point contraction mode. */ | |
185 enum fp_contract_mode { | |
186 FP_CONTRACT_OFF = 0, | |
187 FP_CONTRACT_ON = 1, | |
188 FP_CONTRACT_FAST = 2 | |
189 }; | |
190 | |
191 /* Vectorizer verbosity levels. */ | |
192 enum vect_verbosity_levels { | |
193 REPORT_NONE, | |
194 REPORT_VECTORIZED_LOCATIONS, | |
195 REPORT_UNVECTORIZED_LOCATIONS, | |
196 REPORT_COST, | |
197 REPORT_ALIGNMENT, | |
198 REPORT_DR_DETAILS, | |
199 REPORT_BAD_FORM_LOOPS, | |
200 REPORT_OUTER_LOOPS, | |
201 REPORT_SLP, | |
202 REPORT_DETAILS, | |
203 /* New verbosity levels should be added before this one. */ | |
204 MAX_VERBOSITY_LEVEL | |
205 }; | |
206 | |
207 #endif /* ! GCC_FLAG_TYPES_H */ |