]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/flag-types.h
* flag-types.h: New.
[thirdparty/gcc.git] / gcc / flag-types.h
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_level
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 /* Enumerate visibility settings. This is deliberately ordered from most
62 to least visibility. */
63 #ifndef SYMBOL_VISIBILITY_DEFINED
64 #define SYMBOL_VISIBILITY_DEFINED
65 enum symbol_visibility
66 {
67 VISIBILITY_DEFAULT,
68 VISIBILITY_PROTECTED,
69 VISIBILITY_HIDDEN,
70 VISIBILITY_INTERNAL
71 };
72 #endif
73
74 struct visibility_flags
75 {
76 unsigned inpragma : 1; /* True when in #pragma GCC visibility. */
77 unsigned inlines_hidden : 1; /* True when -finlineshidden in effect. */
78 };
79
80 /* The algorithm used for the integrated register allocator (IRA). */
81 enum ira_algorithm
82 {
83 IRA_ALGORITHM_CB,
84 IRA_ALGORITHM_PRIORITY
85 };
86
87 /* The regions used for the integrated register allocator (IRA). */
88 enum ira_region
89 {
90 IRA_REGION_ONE,
91 IRA_REGION_ALL,
92 IRA_REGION_MIXED
93 };
94
95 /* The options for excess precision. */
96 enum excess_precision
97 {
98 EXCESS_PRECISION_DEFAULT,
99 EXCESS_PRECISION_FAST,
100 EXCESS_PRECISION_STANDARD
101 };
102
103 /* Selection of the graph form. */
104 enum graph_dump_types
105 {
106 no_graph = 0,
107 vcg
108 };
109
110 /* Type of stack check. */
111 enum stack_check_type
112 {
113 /* Do not check the stack. */
114 NO_STACK_CHECK = 0,
115
116 /* Check the stack generically, i.e. assume no specific support
117 from the target configuration files. */
118 GENERIC_STACK_CHECK,
119
120 /* Check the stack and rely on the target configuration files to
121 check the static frame of functions, i.e. use the generic
122 mechanism only for dynamic stack allocations. */
123 STATIC_BUILTIN_STACK_CHECK,
124
125 /* Check the stack and entirely rely on the target configuration
126 files, i.e. do not use the generic mechanism at all. */
127 FULL_BUILTIN_STACK_CHECK
128 };
129
130 /* Names for the different levels of -Wstrict-overflow=N. The numeric
131 values here correspond to N. */
132
133 enum warn_strict_overflow_code
134 {
135 /* Overflow warning that should be issued with -Wall: a questionable
136 construct that is easy to avoid even when using macros. Example:
137 folding (x + CONSTANT > x) to 1. */
138 WARN_STRICT_OVERFLOW_ALL = 1,
139 /* Overflow warning about folding a comparison to a constant because
140 of undefined signed overflow, other than cases covered by
141 WARN_STRICT_OVERFLOW_ALL. Example: folding (abs (x) >= 0) to 1
142 (this is false when x == INT_MIN). */
143 WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
144 /* Overflow warning about changes to comparisons other than folding
145 them to a constant. Example: folding (x + 1 > 1) to (x > 0). */
146 WARN_STRICT_OVERFLOW_COMPARISON = 3,
147 /* Overflow warnings not covered by the above cases. Example:
148 folding ((x * 10) / 5) to (x * 2). */
149 WARN_STRICT_OVERFLOW_MISC = 4,
150 /* Overflow warnings about reducing magnitude of constants in
151 comparison. Example: folding (x + 2 > y) to (x + 1 >= y). */
152 WARN_STRICT_OVERFLOW_MAGNITUDE = 5
153 };
154
155 #endif /* ! GCC_FLAG_TYPES_H */