OSDN Git Service

2010-11-04 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.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 /* Floating-point contraction mode.  */
156 enum fp_contract_mode {
157   FP_CONTRACT_OFF = 0,
158   FP_CONTRACT_ON = 1,
159   FP_CONTRACT_FAST = 2
160 };
161
162 #endif /* ! GCC_FLAG_TYPES_H */