comparison gcc/flag-types.h @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents 561a7518be6b
children 84e7813d76e9
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* Compilation switch flag type definitions for GCC. 1 /* Compilation switch flag type definitions for GCC.
2 Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2 Copyright (C) 1987-2017 Free Software Foundation, Inc.
3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4 Free Software Foundation, Inc.
5 3
6 This file is part of GCC. 4 This file is part of GCC.
7 5
8 GCC is free software; you can redistribute it and/or modify it under 6 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 7 the terms of the GNU General Public License as published by the Free
91 DINFO_STRUCT_FILE_SYS, /* Also debug structs defined in system 89 DINFO_STRUCT_FILE_SYS, /* Also debug structs defined in system
92 header files. */ 90 header files. */
93 DINFO_STRUCT_FILE_ANY /* Debug structs defined in all files. */ 91 DINFO_STRUCT_FILE_ANY /* Debug structs defined in all files. */
94 }; 92 };
95 93
96 /* Enumerate visibility settings. This is deliberately ordered from most 94 /* Balance between GNAT encodings and standard DWARF to emit. */
97 to least visibility. */ 95
98 #ifndef SYMBOL_VISIBILITY_DEFINED 96 enum dwarf_gnat_encodings
99 #define SYMBOL_VISIBILITY_DEFINED 97 {
100 enum symbol_visibility 98 DWARF_GNAT_ENCODINGS_ALL = 0, /* Emit all GNAT encodings, then emit as
101 { 99 much standard DWARF as possible so it
102 VISIBILITY_DEFAULT, 100 does not conflict with GNAT
103 VISIBILITY_PROTECTED, 101 encodings. */
104 VISIBILITY_HIDDEN, 102 DWARF_GNAT_ENCODINGS_GDB = 1, /* Emit as much standard DWARF as possible
105 VISIBILITY_INTERNAL 103 as long as GDB handles them. Emit GNAT
106 }; 104 encodings for the rest. */
107 #endif 105 DWARF_GNAT_ENCODINGS_MINIMAL = 2 /* Emit all the standard DWARF we can.
106 Emit GNAT encodings for the rest. */
107 };
108
109 /* Enumerate Objective-c instance variable visibility settings. */
110
111 enum ivar_visibility
112 {
113 IVAR_VISIBILITY_PRIVATE,
114 IVAR_VISIBILITY_PROTECTED,
115 IVAR_VISIBILITY_PUBLIC,
116 IVAR_VISIBILITY_PACKAGE
117 };
118
119 /* The stack reuse level. */
120 enum stack_reuse_level
121 {
122 SR_NONE,
123 SR_NAMED_VARS,
124 SR_ALL
125 };
126
127 /* The algorithm used for basic block reordering. */
128 enum reorder_blocks_algorithm
129 {
130 REORDER_BLOCKS_ALGORITHM_SIMPLE,
131 REORDER_BLOCKS_ALGORITHM_STC
132 };
108 133
109 /* The algorithm used for the integrated register allocator (IRA). */ 134 /* The algorithm used for the integrated register allocator (IRA). */
110 enum ira_algorithm 135 enum ira_algorithm
111 { 136 {
112 IRA_ALGORITHM_CB, 137 IRA_ALGORITHM_CB,
116 /* The regions used for the integrated register allocator (IRA). */ 141 /* The regions used for the integrated register allocator (IRA). */
117 enum ira_region 142 enum ira_region
118 { 143 {
119 IRA_REGION_ONE, 144 IRA_REGION_ONE,
120 IRA_REGION_ALL, 145 IRA_REGION_ALL,
121 IRA_REGION_MIXED 146 IRA_REGION_MIXED,
147 /* This value means that there were no options -fira-region on the
148 command line and that we should choose a value depending on the
149 used -O option. */
150 IRA_REGION_AUTODETECT
122 }; 151 };
123 152
124 /* The options for excess precision. */ 153 /* The options for excess precision. */
125 enum excess_precision 154 enum excess_precision
126 { 155 {
127 EXCESS_PRECISION_DEFAULT, 156 EXCESS_PRECISION_DEFAULT,
128 EXCESS_PRECISION_FAST, 157 EXCESS_PRECISION_FAST,
129 EXCESS_PRECISION_STANDARD 158 EXCESS_PRECISION_STANDARD
130 }; 159 };
131 160
132 /* Selection of the graph form. */ 161 /* The options for which values of FLT_EVAL_METHOD are permissible. */
133 enum graph_dump_types 162 enum permitted_flt_eval_methods
134 { 163 {
135 no_graph = 0, 164 PERMITTED_FLT_EVAL_METHODS_DEFAULT,
136 vcg 165 PERMITTED_FLT_EVAL_METHODS_TS_18661,
137 }; 166 PERMITTED_FLT_EVAL_METHODS_C11
138 167 };
139 /* Type of stack check. */ 168
169 /* Type of stack check.
170
171 Stack checking is designed to detect infinite recursion and stack
172 overflows for Ada programs. Furthermore stack checking tries to ensure
173 in that scenario that enough stack space is left to run a signal handler.
174
175 -fstack-check= does not prevent stack-clash style attacks. For that
176 you want -fstack-clash-protection. */
140 enum stack_check_type 177 enum stack_check_type
141 { 178 {
142 /* Do not check the stack. */ 179 /* Do not check the stack. */
143 NO_STACK_CHECK = 0, 180 NO_STACK_CHECK = 0,
144 181
152 STATIC_BUILTIN_STACK_CHECK, 189 STATIC_BUILTIN_STACK_CHECK,
153 190
154 /* Check the stack and entirely rely on the target configuration 191 /* Check the stack and entirely rely on the target configuration
155 files, i.e. do not use the generic mechanism at all. */ 192 files, i.e. do not use the generic mechanism at all. */
156 FULL_BUILTIN_STACK_CHECK 193 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 }; 194 };
183 195
184 /* Floating-point contraction mode. */ 196 /* Floating-point contraction mode. */
185 enum fp_contract_mode { 197 enum fp_contract_mode {
186 FP_CONTRACT_OFF = 0, 198 FP_CONTRACT_OFF = 0,
187 FP_CONTRACT_ON = 1, 199 FP_CONTRACT_ON = 1,
188 FP_CONTRACT_FAST = 2 200 FP_CONTRACT_FAST = 2
189 }; 201 };
190 202
191 /* Vectorizer verbosity levels. */ 203 /* Scalar storage order kind. */
192 enum vect_verbosity_levels { 204 enum scalar_storage_order_kind {
193 REPORT_NONE, 205 SSO_NATIVE = 0,
194 REPORT_VECTORIZED_LOCATIONS, 206 SSO_BIG_ENDIAN,
195 REPORT_UNVECTORIZED_LOCATIONS, 207 SSO_LITTLE_ENDIAN
196 REPORT_COST, 208 };
197 REPORT_ALIGNMENT, 209
198 REPORT_DR_DETAILS, 210 /* Vectorizer cost-model. */
199 REPORT_BAD_FORM_LOOPS, 211 enum vect_cost_model {
200 REPORT_OUTER_LOOPS, 212 VECT_COST_MODEL_UNLIMITED = 0,
201 REPORT_SLP, 213 VECT_COST_MODEL_CHEAP = 1,
202 REPORT_DETAILS, 214 VECT_COST_MODEL_DYNAMIC = 2,
203 /* New verbosity levels should be added before this one. */ 215 VECT_COST_MODEL_DEFAULT = 3
204 MAX_VERBOSITY_LEVEL 216 };
205 }; 217
206 218 /* Different instrumentation modes. */
219 enum sanitize_code {
220 /* AddressSanitizer. */
221 SANITIZE_ADDRESS = 1UL << 0,
222 SANITIZE_USER_ADDRESS = 1UL << 1,
223 SANITIZE_KERNEL_ADDRESS = 1UL << 2,
224 /* ThreadSanitizer. */
225 SANITIZE_THREAD = 1UL << 3,
226 /* LeakSanitizer. */
227 SANITIZE_LEAK = 1UL << 4,
228 /* UndefinedBehaviorSanitizer. */
229 SANITIZE_SHIFT_BASE = 1UL << 5,
230 SANITIZE_SHIFT_EXPONENT = 1UL << 6,
231 SANITIZE_DIVIDE = 1UL << 7,
232 SANITIZE_UNREACHABLE = 1UL << 8,
233 SANITIZE_VLA = 1UL << 9,
234 SANITIZE_NULL = 1UL << 10,
235 SANITIZE_RETURN = 1UL << 11,
236 SANITIZE_SI_OVERFLOW = 1UL << 12,
237 SANITIZE_BOOL = 1UL << 13,
238 SANITIZE_ENUM = 1UL << 14,
239 SANITIZE_FLOAT_DIVIDE = 1UL << 15,
240 SANITIZE_FLOAT_CAST = 1UL << 16,
241 SANITIZE_BOUNDS = 1UL << 17,
242 SANITIZE_ALIGNMENT = 1UL << 18,
243 SANITIZE_NONNULL_ATTRIBUTE = 1UL << 19,
244 SANITIZE_RETURNS_NONNULL_ATTRIBUTE = 1UL << 20,
245 SANITIZE_OBJECT_SIZE = 1UL << 21,
246 SANITIZE_VPTR = 1UL << 22,
247 SANITIZE_BOUNDS_STRICT = 1UL << 23,
248 SANITIZE_POINTER_OVERFLOW = 1UL << 24,
249 SANITIZE_BUILTIN = 1UL << 25,
250 SANITIZE_SHIFT = SANITIZE_SHIFT_BASE | SANITIZE_SHIFT_EXPONENT,
251 SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
252 | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN
253 | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM
254 | SANITIZE_BOUNDS | SANITIZE_ALIGNMENT
255 | SANITIZE_NONNULL_ATTRIBUTE
256 | SANITIZE_RETURNS_NONNULL_ATTRIBUTE
257 | SANITIZE_OBJECT_SIZE | SANITIZE_VPTR
258 | SANITIZE_POINTER_OVERFLOW | SANITIZE_BUILTIN,
259 SANITIZE_UNDEFINED_NONDEFAULT = SANITIZE_FLOAT_DIVIDE | SANITIZE_FLOAT_CAST
260 | SANITIZE_BOUNDS_STRICT
261 };
262
263 /* Different trace modes. */
264 enum sanitize_coverage_code {
265 /* Trace PC. */
266 SANITIZE_COV_TRACE_PC = 1 << 0,
267 /* Trace Comparison. */
268 SANITIZE_COV_TRACE_CMP = 1 << 1
269 };
270
271 /* flag_vtable_verify initialization levels. */
272 enum vtv_priority {
273 VTV_NO_PRIORITY = 0, /* i.E. Do NOT do vtable verification. */
274 VTV_STANDARD_PRIORITY = 1,
275 VTV_PREINIT_PRIORITY = 2
276 };
277
278 /* flag_lto_partition initialization values. */
279 enum lto_partition_model {
280 LTO_PARTITION_NONE = 0,
281 LTO_PARTITION_ONE = 1,
282 LTO_PARTITION_BALANCED = 2,
283 LTO_PARTITION_1TO1 = 3,
284 LTO_PARTITION_MAX = 4
285 };
286
287 /* flag_lto_linker_output initialization values. */
288 enum lto_linker_output {
289 LTO_LINKER_OUTPUT_UNKNOWN,
290 LTO_LINKER_OUTPUT_REL,
291 LTO_LINKER_OUTPUT_DYN,
292 LTO_LINKER_OUTPUT_PIE,
293 LTO_LINKER_OUTPUT_EXEC
294 };
295
296 /* gfortran -finit-real= values. */
297
298 enum gfc_init_local_real
299 {
300 GFC_INIT_REAL_OFF = 0,
301 GFC_INIT_REAL_ZERO,
302 GFC_INIT_REAL_NAN,
303 GFC_INIT_REAL_SNAN,
304 GFC_INIT_REAL_INF,
305 GFC_INIT_REAL_NEG_INF
306 };
307
308 /* gfortran -fcoarray= values. */
309
310 enum gfc_fcoarray
311 {
312 GFC_FCOARRAY_NONE = 0,
313 GFC_FCOARRAY_SINGLE,
314 GFC_FCOARRAY_LIB
315 };
316
317
318 /* gfortran -fconvert= values; used for unformatted I/O.
319 Keep in sync with GFC_CONVERT_* in gcc/fortran/libgfortran.h. */
320 enum gfc_convert
321 {
322 GFC_FLAG_CONVERT_NATIVE = 0,
323 GFC_FLAG_CONVERT_SWAP,
324 GFC_FLAG_CONVERT_BIG,
325 GFC_FLAG_CONVERT_LITTLE
326 };
327
328
329 /* Control-Flow Protection values. */
330 enum cf_protection_level
331 {
332 CF_NONE = 0,
333 CF_BRANCH = 1 << 0,
334 CF_RETURN = 1 << 1,
335 CF_FULL = CF_BRANCH | CF_RETURN,
336 CF_SET = 1 << 2
337 };
207 #endif /* ! GCC_FLAG_TYPES_H */ 338 #endif /* ! GCC_FLAG_TYPES_H */