annotate gcc/flag-types.h @ 120:f93fa5091070

fix conv1.c
author mir3636
date Thu, 08 Mar 2018 14:53:42 +0900
parents 04ced10e8804
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /* Compilation switch flag type definitions for GCC.
111
kono
parents: 68
diff changeset
2 Copyright (C) 1987-2017 Free Software Foundation, Inc.
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 This file is part of GCC.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 GCC is free software; you can redistribute it and/or modify it under
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 the terms of the GNU General Public License as published by the Free
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 Software Foundation; either version 3, or (at your option) any later
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 version.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 for more details.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 along with GCC; see the file COPYING3. If not see
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <http://www.gnu.org/licenses/>. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 #ifndef GCC_FLAG_TYPES_H
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 #define GCC_FLAG_TYPES_H
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 enum debug_info_type
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 NO_DEBUG, /* Write no debug info. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 DBX_DEBUG, /* Write BSD .stabs for DBX (using dbxout.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 SDB_DEBUG, /* Write COFF for (old) SDB (using sdbout.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 DWARF2_DEBUG, /* Write Dwarf v2 debug info (using dwarf2out.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 XCOFF_DEBUG, /* Write IBM/Xcoff debug info (using dbxout.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 VMS_DEBUG, /* Write VMS debug info (using vmsdbgout.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 and DWARF v2 debug info (using dwarf2out.c). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 enum debug_info_levels
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 DINFO_LEVEL_NONE, /* Write no debugging info. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 DINFO_LEVEL_TERSE, /* Write minimal info to support tracebacks only. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 DINFO_LEVEL_NORMAL, /* Write info for all declarations (and line table). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 DINFO_LEVEL_VERBOSE /* Write normal info plus #define/#undef info. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 /* A major contribution to object and executable size is debug
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 information size. A major contribution to debug information
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 size is struct descriptions replicated in several object files.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 The following function determines whether or not debug information
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 should be generated for a given struct. The indirect parameter
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 indicates that the struct is being handled indirectly, via
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 a pointer. See opts.c for the implementation. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 enum debug_info_usage
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 DINFO_USAGE_DFN, /* A struct definition. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 DINFO_USAGE_DIR_USE, /* A direct use, such as the type of a variable. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 DINFO_USAGE_IND_USE, /* An indirect use, such as through a pointer. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 DINFO_USAGE_NUM_ENUMS /* The number of enumerators. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 /* A major contribution to object and executable size is debug
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 information size. A major contribution to debug information size
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 is struct descriptions replicated in several object files. The
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 following flags attempt to reduce this information. The basic
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 idea is to not emit struct debugging information in the current
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 compilation unit when that information will be generated by
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 another compilation unit.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 Debug information for a struct defined in the current source
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 file should be generated in the object file. Likewise the
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 debug information for a struct defined in a header should be
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 generated in the object file of the corresponding source file.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 Both of these case are handled when the base name of the file of
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 the struct definition matches the base name of the source file
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 of the current compilation unit. This matching emits minimal
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 struct debugging information.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 The base file name matching rule above will fail to emit debug
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 information for structs defined in system headers. So a second
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 category of files includes system headers in addition to files
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 with matching bases.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 The remaining types of files are library headers and application
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 headers. We cannot currently distinguish these two types. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 enum debug_struct_file
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 DINFO_STRUCT_FILE_NONE, /* Debug no structs. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 DINFO_STRUCT_FILE_BASE, /* Debug structs defined in files with the
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 same base name as the compilation unit. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 DINFO_STRUCT_FILE_SYS, /* Also debug structs defined in system
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 header files. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 DINFO_STRUCT_FILE_ANY /* Debug structs defined in all files. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
111
kono
parents: 68
diff changeset
94 /* Balance between GNAT encodings and standard DWARF to emit. */
kono
parents: 68
diff changeset
95
kono
parents: 68
diff changeset
96 enum dwarf_gnat_encodings
kono
parents: 68
diff changeset
97 {
kono
parents: 68
diff changeset
98 DWARF_GNAT_ENCODINGS_ALL = 0, /* Emit all GNAT encodings, then emit as
kono
parents: 68
diff changeset
99 much standard DWARF as possible so it
kono
parents: 68
diff changeset
100 does not conflict with GNAT
kono
parents: 68
diff changeset
101 encodings. */
kono
parents: 68
diff changeset
102 DWARF_GNAT_ENCODINGS_GDB = 1, /* Emit as much standard DWARF as possible
kono
parents: 68
diff changeset
103 as long as GDB handles them. Emit GNAT
kono
parents: 68
diff changeset
104 encodings for the rest. */
kono
parents: 68
diff changeset
105 DWARF_GNAT_ENCODINGS_MINIMAL = 2 /* Emit all the standard DWARF we can.
kono
parents: 68
diff changeset
106 Emit GNAT encodings for the rest. */
kono
parents: 68
diff changeset
107 };
kono
parents: 68
diff changeset
108
kono
parents: 68
diff changeset
109 /* Enumerate Objective-c instance variable visibility settings. */
kono
parents: 68
diff changeset
110
kono
parents: 68
diff changeset
111 enum ivar_visibility
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 {
111
kono
parents: 68
diff changeset
113 IVAR_VISIBILITY_PRIVATE,
kono
parents: 68
diff changeset
114 IVAR_VISIBILITY_PROTECTED,
kono
parents: 68
diff changeset
115 IVAR_VISIBILITY_PUBLIC,
kono
parents: 68
diff changeset
116 IVAR_VISIBILITY_PACKAGE
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 };
111
kono
parents: 68
diff changeset
118
kono
parents: 68
diff changeset
119 /* The stack reuse level. */
kono
parents: 68
diff changeset
120 enum stack_reuse_level
kono
parents: 68
diff changeset
121 {
kono
parents: 68
diff changeset
122 SR_NONE,
kono
parents: 68
diff changeset
123 SR_NAMED_VARS,
kono
parents: 68
diff changeset
124 SR_ALL
kono
parents: 68
diff changeset
125 };
kono
parents: 68
diff changeset
126
kono
parents: 68
diff changeset
127 /* The algorithm used for basic block reordering. */
kono
parents: 68
diff changeset
128 enum reorder_blocks_algorithm
kono
parents: 68
diff changeset
129 {
kono
parents: 68
diff changeset
130 REORDER_BLOCKS_ALGORITHM_SIMPLE,
kono
parents: 68
diff changeset
131 REORDER_BLOCKS_ALGORITHM_STC
kono
parents: 68
diff changeset
132 };
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 /* The algorithm used for the integrated register allocator (IRA). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 enum ira_algorithm
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 IRA_ALGORITHM_CB,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 IRA_ALGORITHM_PRIORITY
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 /* The regions used for the integrated register allocator (IRA). */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 enum ira_region
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 IRA_REGION_ONE,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 IRA_REGION_ALL,
111
kono
parents: 68
diff changeset
146 IRA_REGION_MIXED,
kono
parents: 68
diff changeset
147 /* This value means that there were no options -fira-region on the
kono
parents: 68
diff changeset
148 command line and that we should choose a value depending on the
kono
parents: 68
diff changeset
149 used -O option. */
kono
parents: 68
diff changeset
150 IRA_REGION_AUTODETECT
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 /* The options for excess precision. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 enum excess_precision
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 EXCESS_PRECISION_DEFAULT,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 EXCESS_PRECISION_FAST,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 EXCESS_PRECISION_STANDARD
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
111
kono
parents: 68
diff changeset
161 /* The options for which values of FLT_EVAL_METHOD are permissible. */
kono
parents: 68
diff changeset
162 enum permitted_flt_eval_methods
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 {
111
kono
parents: 68
diff changeset
164 PERMITTED_FLT_EVAL_METHODS_DEFAULT,
kono
parents: 68
diff changeset
165 PERMITTED_FLT_EVAL_METHODS_TS_18661,
kono
parents: 68
diff changeset
166 PERMITTED_FLT_EVAL_METHODS_C11
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168
111
kono
parents: 68
diff changeset
169 /* Type of stack check.
kono
parents: 68
diff changeset
170
kono
parents: 68
diff changeset
171 Stack checking is designed to detect infinite recursion and stack
kono
parents: 68
diff changeset
172 overflows for Ada programs. Furthermore stack checking tries to ensure
kono
parents: 68
diff changeset
173 in that scenario that enough stack space is left to run a signal handler.
kono
parents: 68
diff changeset
174
kono
parents: 68
diff changeset
175 -fstack-check= does not prevent stack-clash style attacks. For that
kono
parents: 68
diff changeset
176 you want -fstack-clash-protection. */
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 enum stack_check_type
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 /* Do not check the stack. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 NO_STACK_CHECK = 0,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 /* Check the stack generically, i.e. assume no specific support
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 from the target configuration files. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 GENERIC_STACK_CHECK,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 /* Check the stack and rely on the target configuration files to
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 check the static frame of functions, i.e. use the generic
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 mechanism only for dynamic stack allocations. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 STATIC_BUILTIN_STACK_CHECK,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 /* Check the stack and entirely rely on the target configuration
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 files, i.e. do not use the generic mechanism at all. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 FULL_BUILTIN_STACK_CHECK
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 /* Floating-point contraction mode. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 enum fp_contract_mode {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 FP_CONTRACT_OFF = 0,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 FP_CONTRACT_ON = 1,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 FP_CONTRACT_FAST = 2
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
111
kono
parents: 68
diff changeset
203 /* Scalar storage order kind. */
kono
parents: 68
diff changeset
204 enum scalar_storage_order_kind {
kono
parents: 68
diff changeset
205 SSO_NATIVE = 0,
kono
parents: 68
diff changeset
206 SSO_BIG_ENDIAN,
kono
parents: 68
diff changeset
207 SSO_LITTLE_ENDIAN
kono
parents: 68
diff changeset
208 };
kono
parents: 68
diff changeset
209
kono
parents: 68
diff changeset
210 /* Vectorizer cost-model. */
kono
parents: 68
diff changeset
211 enum vect_cost_model {
kono
parents: 68
diff changeset
212 VECT_COST_MODEL_UNLIMITED = 0,
kono
parents: 68
diff changeset
213 VECT_COST_MODEL_CHEAP = 1,
kono
parents: 68
diff changeset
214 VECT_COST_MODEL_DYNAMIC = 2,
kono
parents: 68
diff changeset
215 VECT_COST_MODEL_DEFAULT = 3
kono
parents: 68
diff changeset
216 };
kono
parents: 68
diff changeset
217
kono
parents: 68
diff changeset
218 /* Different instrumentation modes. */
kono
parents: 68
diff changeset
219 enum sanitize_code {
kono
parents: 68
diff changeset
220 /* AddressSanitizer. */
kono
parents: 68
diff changeset
221 SANITIZE_ADDRESS = 1UL << 0,
kono
parents: 68
diff changeset
222 SANITIZE_USER_ADDRESS = 1UL << 1,
kono
parents: 68
diff changeset
223 SANITIZE_KERNEL_ADDRESS = 1UL << 2,
kono
parents: 68
diff changeset
224 /* ThreadSanitizer. */
kono
parents: 68
diff changeset
225 SANITIZE_THREAD = 1UL << 3,
kono
parents: 68
diff changeset
226 /* LeakSanitizer. */
kono
parents: 68
diff changeset
227 SANITIZE_LEAK = 1UL << 4,
kono
parents: 68
diff changeset
228 /* UndefinedBehaviorSanitizer. */
kono
parents: 68
diff changeset
229 SANITIZE_SHIFT_BASE = 1UL << 5,
kono
parents: 68
diff changeset
230 SANITIZE_SHIFT_EXPONENT = 1UL << 6,
kono
parents: 68
diff changeset
231 SANITIZE_DIVIDE = 1UL << 7,
kono
parents: 68
diff changeset
232 SANITIZE_UNREACHABLE = 1UL << 8,
kono
parents: 68
diff changeset
233 SANITIZE_VLA = 1UL << 9,
kono
parents: 68
diff changeset
234 SANITIZE_NULL = 1UL << 10,
kono
parents: 68
diff changeset
235 SANITIZE_RETURN = 1UL << 11,
kono
parents: 68
diff changeset
236 SANITIZE_SI_OVERFLOW = 1UL << 12,
kono
parents: 68
diff changeset
237 SANITIZE_BOOL = 1UL << 13,
kono
parents: 68
diff changeset
238 SANITIZE_ENUM = 1UL << 14,
kono
parents: 68
diff changeset
239 SANITIZE_FLOAT_DIVIDE = 1UL << 15,
kono
parents: 68
diff changeset
240 SANITIZE_FLOAT_CAST = 1UL << 16,
kono
parents: 68
diff changeset
241 SANITIZE_BOUNDS = 1UL << 17,
kono
parents: 68
diff changeset
242 SANITIZE_ALIGNMENT = 1UL << 18,
kono
parents: 68
diff changeset
243 SANITIZE_NONNULL_ATTRIBUTE = 1UL << 19,
kono
parents: 68
diff changeset
244 SANITIZE_RETURNS_NONNULL_ATTRIBUTE = 1UL << 20,
kono
parents: 68
diff changeset
245 SANITIZE_OBJECT_SIZE = 1UL << 21,
kono
parents: 68
diff changeset
246 SANITIZE_VPTR = 1UL << 22,
kono
parents: 68
diff changeset
247 SANITIZE_BOUNDS_STRICT = 1UL << 23,
kono
parents: 68
diff changeset
248 SANITIZE_POINTER_OVERFLOW = 1UL << 24,
kono
parents: 68
diff changeset
249 SANITIZE_BUILTIN = 1UL << 25,
kono
parents: 68
diff changeset
250 SANITIZE_SHIFT = SANITIZE_SHIFT_BASE | SANITIZE_SHIFT_EXPONENT,
kono
parents: 68
diff changeset
251 SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
kono
parents: 68
diff changeset
252 | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN
kono
parents: 68
diff changeset
253 | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM
kono
parents: 68
diff changeset
254 | SANITIZE_BOUNDS | SANITIZE_ALIGNMENT
kono
parents: 68
diff changeset
255 | SANITIZE_NONNULL_ATTRIBUTE
kono
parents: 68
diff changeset
256 | SANITIZE_RETURNS_NONNULL_ATTRIBUTE
kono
parents: 68
diff changeset
257 | SANITIZE_OBJECT_SIZE | SANITIZE_VPTR
kono
parents: 68
diff changeset
258 | SANITIZE_POINTER_OVERFLOW | SANITIZE_BUILTIN,
kono
parents: 68
diff changeset
259 SANITIZE_UNDEFINED_NONDEFAULT = SANITIZE_FLOAT_DIVIDE | SANITIZE_FLOAT_CAST
kono
parents: 68
diff changeset
260 | SANITIZE_BOUNDS_STRICT
kono
parents: 68
diff changeset
261 };
kono
parents: 68
diff changeset
262
kono
parents: 68
diff changeset
263 /* Different trace modes. */
kono
parents: 68
diff changeset
264 enum sanitize_coverage_code {
kono
parents: 68
diff changeset
265 /* Trace PC. */
kono
parents: 68
diff changeset
266 SANITIZE_COV_TRACE_PC = 1 << 0,
kono
parents: 68
diff changeset
267 /* Trace Comparison. */
kono
parents: 68
diff changeset
268 SANITIZE_COV_TRACE_CMP = 1 << 1
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
270
111
kono
parents: 68
diff changeset
271 /* flag_vtable_verify initialization levels. */
kono
parents: 68
diff changeset
272 enum vtv_priority {
kono
parents: 68
diff changeset
273 VTV_NO_PRIORITY = 0, /* i.E. Do NOT do vtable verification. */
kono
parents: 68
diff changeset
274 VTV_STANDARD_PRIORITY = 1,
kono
parents: 68
diff changeset
275 VTV_PREINIT_PRIORITY = 2
kono
parents: 68
diff changeset
276 };
kono
parents: 68
diff changeset
277
kono
parents: 68
diff changeset
278 /* flag_lto_partition initialization values. */
kono
parents: 68
diff changeset
279 enum lto_partition_model {
kono
parents: 68
diff changeset
280 LTO_PARTITION_NONE = 0,
kono
parents: 68
diff changeset
281 LTO_PARTITION_ONE = 1,
kono
parents: 68
diff changeset
282 LTO_PARTITION_BALANCED = 2,
kono
parents: 68
diff changeset
283 LTO_PARTITION_1TO1 = 3,
kono
parents: 68
diff changeset
284 LTO_PARTITION_MAX = 4
kono
parents: 68
diff changeset
285 };
kono
parents: 68
diff changeset
286
kono
parents: 68
diff changeset
287 /* flag_lto_linker_output initialization values. */
kono
parents: 68
diff changeset
288 enum lto_linker_output {
kono
parents: 68
diff changeset
289 LTO_LINKER_OUTPUT_UNKNOWN,
kono
parents: 68
diff changeset
290 LTO_LINKER_OUTPUT_REL,
kono
parents: 68
diff changeset
291 LTO_LINKER_OUTPUT_DYN,
kono
parents: 68
diff changeset
292 LTO_LINKER_OUTPUT_PIE,
kono
parents: 68
diff changeset
293 LTO_LINKER_OUTPUT_EXEC
kono
parents: 68
diff changeset
294 };
kono
parents: 68
diff changeset
295
kono
parents: 68
diff changeset
296 /* gfortran -finit-real= values. */
kono
parents: 68
diff changeset
297
kono
parents: 68
diff changeset
298 enum gfc_init_local_real
kono
parents: 68
diff changeset
299 {
kono
parents: 68
diff changeset
300 GFC_INIT_REAL_OFF = 0,
kono
parents: 68
diff changeset
301 GFC_INIT_REAL_ZERO,
kono
parents: 68
diff changeset
302 GFC_INIT_REAL_NAN,
kono
parents: 68
diff changeset
303 GFC_INIT_REAL_SNAN,
kono
parents: 68
diff changeset
304 GFC_INIT_REAL_INF,
kono
parents: 68
diff changeset
305 GFC_INIT_REAL_NEG_INF
kono
parents: 68
diff changeset
306 };
kono
parents: 68
diff changeset
307
kono
parents: 68
diff changeset
308 /* gfortran -fcoarray= values. */
kono
parents: 68
diff changeset
309
kono
parents: 68
diff changeset
310 enum gfc_fcoarray
kono
parents: 68
diff changeset
311 {
kono
parents: 68
diff changeset
312 GFC_FCOARRAY_NONE = 0,
kono
parents: 68
diff changeset
313 GFC_FCOARRAY_SINGLE,
kono
parents: 68
diff changeset
314 GFC_FCOARRAY_LIB
kono
parents: 68
diff changeset
315 };
kono
parents: 68
diff changeset
316
kono
parents: 68
diff changeset
317
kono
parents: 68
diff changeset
318 /* gfortran -fconvert= values; used for unformatted I/O.
kono
parents: 68
diff changeset
319 Keep in sync with GFC_CONVERT_* in gcc/fortran/libgfortran.h. */
kono
parents: 68
diff changeset
320 enum gfc_convert
kono
parents: 68
diff changeset
321 {
kono
parents: 68
diff changeset
322 GFC_FLAG_CONVERT_NATIVE = 0,
kono
parents: 68
diff changeset
323 GFC_FLAG_CONVERT_SWAP,
kono
parents: 68
diff changeset
324 GFC_FLAG_CONVERT_BIG,
kono
parents: 68
diff changeset
325 GFC_FLAG_CONVERT_LITTLE
kono
parents: 68
diff changeset
326 };
kono
parents: 68
diff changeset
327
kono
parents: 68
diff changeset
328
kono
parents: 68
diff changeset
329 /* Control-Flow Protection values. */
kono
parents: 68
diff changeset
330 enum cf_protection_level
kono
parents: 68
diff changeset
331 {
kono
parents: 68
diff changeset
332 CF_NONE = 0,
kono
parents: 68
diff changeset
333 CF_BRANCH = 1 << 0,
kono
parents: 68
diff changeset
334 CF_RETURN = 1 << 1,
kono
parents: 68
diff changeset
335 CF_FULL = CF_BRANCH | CF_RETURN,
kono
parents: 68
diff changeset
336 CF_SET = 1 << 2
kono
parents: 68
diff changeset
337 };
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 #endif /* ! GCC_FLAG_TYPES_H */