annotate gcc/flag-types.h @ 143:76e1cf5455ef

add cbc_gc test
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:24:05 +0900
parents 84e7813d76e9
children 1830386684a0
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.
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 Copyright (C) 1987-2018 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 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
28 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
29 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
30 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
31 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
32 };
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 enum debug_info_levels
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 DINFO_LEVEL_NONE, /* Write no debugging info. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 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
38 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
39 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
40 };
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 /* 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
43 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
44 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
45 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
46 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
47 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
48 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
49
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 enum debug_info_usage
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 DINFO_USAGE_DFN, /* A struct definition. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 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
54 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
55 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
56 };
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 /* 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
59 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
60 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
61 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
62 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
63 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
64 another compilation unit.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 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
67 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
68 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
69 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
70 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
71 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
72 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
73 struct debugging information.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 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
76 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
77 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
78 with matching bases.
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 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
81 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
82
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 enum debug_struct_file
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 DINFO_STRUCT_FILE_NONE, /* Debug no structs. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 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
87 same base name as the compilation unit. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 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
89 header files. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 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
91 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
111
kono
parents: 68
diff changeset
93 /* Balance between GNAT encodings and standard DWARF to emit. */
kono
parents: 68
diff changeset
94
kono
parents: 68
diff changeset
95 enum dwarf_gnat_encodings
kono
parents: 68
diff changeset
96 {
kono
parents: 68
diff changeset
97 DWARF_GNAT_ENCODINGS_ALL = 0, /* Emit all GNAT encodings, then emit as
kono
parents: 68
diff changeset
98 much standard DWARF as possible so it
kono
parents: 68
diff changeset
99 does not conflict with GNAT
kono
parents: 68
diff changeset
100 encodings. */
kono
parents: 68
diff changeset
101 DWARF_GNAT_ENCODINGS_GDB = 1, /* Emit as much standard DWARF as possible
kono
parents: 68
diff changeset
102 as long as GDB handles them. Emit GNAT
kono
parents: 68
diff changeset
103 encodings for the rest. */
kono
parents: 68
diff changeset
104 DWARF_GNAT_ENCODINGS_MINIMAL = 2 /* Emit all the standard DWARF we can.
kono
parents: 68
diff changeset
105 Emit GNAT encodings for the rest. */
kono
parents: 68
diff changeset
106 };
kono
parents: 68
diff changeset
107
kono
parents: 68
diff changeset
108 /* Enumerate Objective-c instance variable visibility settings. */
kono
parents: 68
diff changeset
109
kono
parents: 68
diff changeset
110 enum ivar_visibility
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 {
111
kono
parents: 68
diff changeset
112 IVAR_VISIBILITY_PRIVATE,
kono
parents: 68
diff changeset
113 IVAR_VISIBILITY_PROTECTED,
kono
parents: 68
diff changeset
114 IVAR_VISIBILITY_PUBLIC,
kono
parents: 68
diff changeset
115 IVAR_VISIBILITY_PACKAGE
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 };
111
kono
parents: 68
diff changeset
117
kono
parents: 68
diff changeset
118 /* The stack reuse level. */
kono
parents: 68
diff changeset
119 enum stack_reuse_level
kono
parents: 68
diff changeset
120 {
kono
parents: 68
diff changeset
121 SR_NONE,
kono
parents: 68
diff changeset
122 SR_NAMED_VARS,
kono
parents: 68
diff changeset
123 SR_ALL
kono
parents: 68
diff changeset
124 };
kono
parents: 68
diff changeset
125
kono
parents: 68
diff changeset
126 /* The algorithm used for basic block reordering. */
kono
parents: 68
diff changeset
127 enum reorder_blocks_algorithm
kono
parents: 68
diff changeset
128 {
kono
parents: 68
diff changeset
129 REORDER_BLOCKS_ALGORITHM_SIMPLE,
kono
parents: 68
diff changeset
130 REORDER_BLOCKS_ALGORITHM_STC
kono
parents: 68
diff changeset
131 };
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 /* 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
134 enum ira_algorithm
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 IRA_ALGORITHM_CB,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 IRA_ALGORITHM_PRIORITY
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 };
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 /* 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
141 enum ira_region
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 IRA_REGION_ONE,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 IRA_REGION_ALL,
111
kono
parents: 68
diff changeset
145 IRA_REGION_MIXED,
kono
parents: 68
diff changeset
146 /* This value means that there were no options -fira-region on the
kono
parents: 68
diff changeset
147 command line and that we should choose a value depending on the
kono
parents: 68
diff changeset
148 used -O option. */
kono
parents: 68
diff changeset
149 IRA_REGION_AUTODETECT
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 };
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 /* The options for excess precision. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 enum excess_precision
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 EXCESS_PRECISION_DEFAULT,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 EXCESS_PRECISION_FAST,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 EXCESS_PRECISION_STANDARD
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
111
kono
parents: 68
diff changeset
160 /* The options for which values of FLT_EVAL_METHOD are permissible. */
kono
parents: 68
diff changeset
161 enum permitted_flt_eval_methods
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 {
111
kono
parents: 68
diff changeset
163 PERMITTED_FLT_EVAL_METHODS_DEFAULT,
kono
parents: 68
diff changeset
164 PERMITTED_FLT_EVAL_METHODS_TS_18661,
kono
parents: 68
diff changeset
165 PERMITTED_FLT_EVAL_METHODS_C11
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
111
kono
parents: 68
diff changeset
168 /* Type of stack check.
kono
parents: 68
diff changeset
169
kono
parents: 68
diff changeset
170 Stack checking is designed to detect infinite recursion and stack
kono
parents: 68
diff changeset
171 overflows for Ada programs. Furthermore stack checking tries to ensure
kono
parents: 68
diff changeset
172 in that scenario that enough stack space is left to run a signal handler.
kono
parents: 68
diff changeset
173
kono
parents: 68
diff changeset
174 -fstack-check= does not prevent stack-clash style attacks. For that
kono
parents: 68
diff changeset
175 you want -fstack-clash-protection. */
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 enum stack_check_type
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 /* Do not check the stack. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 NO_STACK_CHECK = 0,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 /* 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
182 from the target configuration files. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 GENERIC_STACK_CHECK,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 /* 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
186 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
187 mechanism only for dynamic stack allocations. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 STATIC_BUILTIN_STACK_CHECK,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 /* 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
191 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
192 FULL_BUILTIN_STACK_CHECK
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 };
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 /* Floating-point contraction mode. */
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 enum fp_contract_mode {
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 FP_CONTRACT_OFF = 0,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 FP_CONTRACT_ON = 1,
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 FP_CONTRACT_FAST = 2
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
201
111
kono
parents: 68
diff changeset
202 /* Scalar storage order kind. */
kono
parents: 68
diff changeset
203 enum scalar_storage_order_kind {
kono
parents: 68
diff changeset
204 SSO_NATIVE = 0,
kono
parents: 68
diff changeset
205 SSO_BIG_ENDIAN,
kono
parents: 68
diff changeset
206 SSO_LITTLE_ENDIAN
kono
parents: 68
diff changeset
207 };
kono
parents: 68
diff changeset
208
kono
parents: 68
diff changeset
209 /* Vectorizer cost-model. */
kono
parents: 68
diff changeset
210 enum vect_cost_model {
kono
parents: 68
diff changeset
211 VECT_COST_MODEL_UNLIMITED = 0,
kono
parents: 68
diff changeset
212 VECT_COST_MODEL_CHEAP = 1,
kono
parents: 68
diff changeset
213 VECT_COST_MODEL_DYNAMIC = 2,
kono
parents: 68
diff changeset
214 VECT_COST_MODEL_DEFAULT = 3
kono
parents: 68
diff changeset
215 };
kono
parents: 68
diff changeset
216
kono
parents: 68
diff changeset
217 /* Different instrumentation modes. */
kono
parents: 68
diff changeset
218 enum sanitize_code {
kono
parents: 68
diff changeset
219 /* AddressSanitizer. */
kono
parents: 68
diff changeset
220 SANITIZE_ADDRESS = 1UL << 0,
kono
parents: 68
diff changeset
221 SANITIZE_USER_ADDRESS = 1UL << 1,
kono
parents: 68
diff changeset
222 SANITIZE_KERNEL_ADDRESS = 1UL << 2,
kono
parents: 68
diff changeset
223 /* ThreadSanitizer. */
kono
parents: 68
diff changeset
224 SANITIZE_THREAD = 1UL << 3,
kono
parents: 68
diff changeset
225 /* LeakSanitizer. */
kono
parents: 68
diff changeset
226 SANITIZE_LEAK = 1UL << 4,
kono
parents: 68
diff changeset
227 /* UndefinedBehaviorSanitizer. */
kono
parents: 68
diff changeset
228 SANITIZE_SHIFT_BASE = 1UL << 5,
kono
parents: 68
diff changeset
229 SANITIZE_SHIFT_EXPONENT = 1UL << 6,
kono
parents: 68
diff changeset
230 SANITIZE_DIVIDE = 1UL << 7,
kono
parents: 68
diff changeset
231 SANITIZE_UNREACHABLE = 1UL << 8,
kono
parents: 68
diff changeset
232 SANITIZE_VLA = 1UL << 9,
kono
parents: 68
diff changeset
233 SANITIZE_NULL = 1UL << 10,
kono
parents: 68
diff changeset
234 SANITIZE_RETURN = 1UL << 11,
kono
parents: 68
diff changeset
235 SANITIZE_SI_OVERFLOW = 1UL << 12,
kono
parents: 68
diff changeset
236 SANITIZE_BOOL = 1UL << 13,
kono
parents: 68
diff changeset
237 SANITIZE_ENUM = 1UL << 14,
kono
parents: 68
diff changeset
238 SANITIZE_FLOAT_DIVIDE = 1UL << 15,
kono
parents: 68
diff changeset
239 SANITIZE_FLOAT_CAST = 1UL << 16,
kono
parents: 68
diff changeset
240 SANITIZE_BOUNDS = 1UL << 17,
kono
parents: 68
diff changeset
241 SANITIZE_ALIGNMENT = 1UL << 18,
kono
parents: 68
diff changeset
242 SANITIZE_NONNULL_ATTRIBUTE = 1UL << 19,
kono
parents: 68
diff changeset
243 SANITIZE_RETURNS_NONNULL_ATTRIBUTE = 1UL << 20,
kono
parents: 68
diff changeset
244 SANITIZE_OBJECT_SIZE = 1UL << 21,
kono
parents: 68
diff changeset
245 SANITIZE_VPTR = 1UL << 22,
kono
parents: 68
diff changeset
246 SANITIZE_BOUNDS_STRICT = 1UL << 23,
kono
parents: 68
diff changeset
247 SANITIZE_POINTER_OVERFLOW = 1UL << 24,
kono
parents: 68
diff changeset
248 SANITIZE_BUILTIN = 1UL << 25,
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
249 SANITIZE_POINTER_COMPARE = 1UL << 26,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
250 SANITIZE_POINTER_SUBTRACT = 1UL << 27,
111
kono
parents: 68
diff changeset
251 SANITIZE_SHIFT = SANITIZE_SHIFT_BASE | SANITIZE_SHIFT_EXPONENT,
kono
parents: 68
diff changeset
252 SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
kono
parents: 68
diff changeset
253 | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN
kono
parents: 68
diff changeset
254 | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM
kono
parents: 68
diff changeset
255 | SANITIZE_BOUNDS | SANITIZE_ALIGNMENT
kono
parents: 68
diff changeset
256 | SANITIZE_NONNULL_ATTRIBUTE
kono
parents: 68
diff changeset
257 | SANITIZE_RETURNS_NONNULL_ATTRIBUTE
kono
parents: 68
diff changeset
258 | SANITIZE_OBJECT_SIZE | SANITIZE_VPTR
kono
parents: 68
diff changeset
259 | SANITIZE_POINTER_OVERFLOW | SANITIZE_BUILTIN,
kono
parents: 68
diff changeset
260 SANITIZE_UNDEFINED_NONDEFAULT = SANITIZE_FLOAT_DIVIDE | SANITIZE_FLOAT_CAST
kono
parents: 68
diff changeset
261 | SANITIZE_BOUNDS_STRICT
kono
parents: 68
diff changeset
262 };
kono
parents: 68
diff changeset
263
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
264 /* Settings of flag_incremental_link. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
265 enum incremental_link {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
266 INCREMENTAL_LINK_NONE,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
267 /* Do incremental linking and produce binary. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
268 INCREMENTAL_LINK_NOLTO,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
269 /* Do incremental linking and produce IL. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
270 INCREMENTAL_LINK_LTO
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
271 };
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
272
111
kono
parents: 68
diff changeset
273 /* Different trace modes. */
kono
parents: 68
diff changeset
274 enum sanitize_coverage_code {
kono
parents: 68
diff changeset
275 /* Trace PC. */
kono
parents: 68
diff changeset
276 SANITIZE_COV_TRACE_PC = 1 << 0,
kono
parents: 68
diff changeset
277 /* Trace Comparison. */
kono
parents: 68
diff changeset
278 SANITIZE_COV_TRACE_CMP = 1 << 1
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
279 };
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
280
111
kono
parents: 68
diff changeset
281 /* flag_vtable_verify initialization levels. */
kono
parents: 68
diff changeset
282 enum vtv_priority {
kono
parents: 68
diff changeset
283 VTV_NO_PRIORITY = 0, /* i.E. Do NOT do vtable verification. */
kono
parents: 68
diff changeset
284 VTV_STANDARD_PRIORITY = 1,
kono
parents: 68
diff changeset
285 VTV_PREINIT_PRIORITY = 2
kono
parents: 68
diff changeset
286 };
kono
parents: 68
diff changeset
287
kono
parents: 68
diff changeset
288 /* flag_lto_partition initialization values. */
kono
parents: 68
diff changeset
289 enum lto_partition_model {
kono
parents: 68
diff changeset
290 LTO_PARTITION_NONE = 0,
kono
parents: 68
diff changeset
291 LTO_PARTITION_ONE = 1,
kono
parents: 68
diff changeset
292 LTO_PARTITION_BALANCED = 2,
kono
parents: 68
diff changeset
293 LTO_PARTITION_1TO1 = 3,
kono
parents: 68
diff changeset
294 LTO_PARTITION_MAX = 4
kono
parents: 68
diff changeset
295 };
kono
parents: 68
diff changeset
296
kono
parents: 68
diff changeset
297 /* flag_lto_linker_output initialization values. */
kono
parents: 68
diff changeset
298 enum lto_linker_output {
kono
parents: 68
diff changeset
299 LTO_LINKER_OUTPUT_UNKNOWN,
kono
parents: 68
diff changeset
300 LTO_LINKER_OUTPUT_REL,
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
301 LTO_LINKER_OUTPUT_NOLTOREL,
111
kono
parents: 68
diff changeset
302 LTO_LINKER_OUTPUT_DYN,
kono
parents: 68
diff changeset
303 LTO_LINKER_OUTPUT_PIE,
kono
parents: 68
diff changeset
304 LTO_LINKER_OUTPUT_EXEC
kono
parents: 68
diff changeset
305 };
kono
parents: 68
diff changeset
306
kono
parents: 68
diff changeset
307 /* gfortran -finit-real= values. */
kono
parents: 68
diff changeset
308
kono
parents: 68
diff changeset
309 enum gfc_init_local_real
kono
parents: 68
diff changeset
310 {
kono
parents: 68
diff changeset
311 GFC_INIT_REAL_OFF = 0,
kono
parents: 68
diff changeset
312 GFC_INIT_REAL_ZERO,
kono
parents: 68
diff changeset
313 GFC_INIT_REAL_NAN,
kono
parents: 68
diff changeset
314 GFC_INIT_REAL_SNAN,
kono
parents: 68
diff changeset
315 GFC_INIT_REAL_INF,
kono
parents: 68
diff changeset
316 GFC_INIT_REAL_NEG_INF
kono
parents: 68
diff changeset
317 };
kono
parents: 68
diff changeset
318
kono
parents: 68
diff changeset
319 /* gfortran -fcoarray= values. */
kono
parents: 68
diff changeset
320
kono
parents: 68
diff changeset
321 enum gfc_fcoarray
kono
parents: 68
diff changeset
322 {
kono
parents: 68
diff changeset
323 GFC_FCOARRAY_NONE = 0,
kono
parents: 68
diff changeset
324 GFC_FCOARRAY_SINGLE,
kono
parents: 68
diff changeset
325 GFC_FCOARRAY_LIB
kono
parents: 68
diff changeset
326 };
kono
parents: 68
diff changeset
327
kono
parents: 68
diff changeset
328
kono
parents: 68
diff changeset
329 /* gfortran -fconvert= values; used for unformatted I/O.
kono
parents: 68
diff changeset
330 Keep in sync with GFC_CONVERT_* in gcc/fortran/libgfortran.h. */
kono
parents: 68
diff changeset
331 enum gfc_convert
kono
parents: 68
diff changeset
332 {
kono
parents: 68
diff changeset
333 GFC_FLAG_CONVERT_NATIVE = 0,
kono
parents: 68
diff changeset
334 GFC_FLAG_CONVERT_SWAP,
kono
parents: 68
diff changeset
335 GFC_FLAG_CONVERT_BIG,
kono
parents: 68
diff changeset
336 GFC_FLAG_CONVERT_LITTLE
kono
parents: 68
diff changeset
337 };
kono
parents: 68
diff changeset
338
kono
parents: 68
diff changeset
339
kono
parents: 68
diff changeset
340 /* Control-Flow Protection values. */
kono
parents: 68
diff changeset
341 enum cf_protection_level
kono
parents: 68
diff changeset
342 {
kono
parents: 68
diff changeset
343 CF_NONE = 0,
kono
parents: 68
diff changeset
344 CF_BRANCH = 1 << 0,
kono
parents: 68
diff changeset
345 CF_RETURN = 1 << 1,
kono
parents: 68
diff changeset
346 CF_FULL = CF_BRANCH | CF_RETURN,
kono
parents: 68
diff changeset
347 CF_SET = 1 << 2
kono
parents: 68
diff changeset
348 };
68
561a7518be6b update gcc-4.6
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 #endif /* ! GCC_FLAG_TYPES_H */