annotate gcc/ada/opt.ads @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 84e7813d76e9
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ------------------------------------------------------------------------------
kono
parents:
diff changeset
2 -- --
kono
parents:
diff changeset
3 -- GNAT COMPILER COMPONENTS --
kono
parents:
diff changeset
4 -- --
kono
parents:
diff changeset
5 -- O P T --
kono
parents:
diff changeset
6 -- --
kono
parents:
diff changeset
7 -- S p e c --
kono
parents:
diff changeset
8 -- --
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
9 -- Copyright (C) 1992-2018, Free Software Foundation, Inc. --
111
kono
parents:
diff changeset
10 -- --
kono
parents:
diff changeset
11 -- GNAT is free software; you can redistribute it and/or modify it under --
kono
parents:
diff changeset
12 -- terms of the GNU General Public License as published by the Free Soft- --
kono
parents:
diff changeset
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
kono
parents:
diff changeset
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
kono
parents:
diff changeset
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
kono
parents:
diff changeset
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
kono
parents:
diff changeset
17 -- --
kono
parents:
diff changeset
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
kono
parents:
diff changeset
19 -- additional permissions described in the GCC Runtime Library Exception, --
kono
parents:
diff changeset
20 -- version 3.1, as published by the Free Software Foundation. --
kono
parents:
diff changeset
21 -- --
kono
parents:
diff changeset
22 -- You should have received a copy of the GNU General Public License and --
kono
parents:
diff changeset
23 -- a copy of the GCC Runtime Library Exception along with this program; --
kono
parents:
diff changeset
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
kono
parents:
diff changeset
25 -- <http://www.gnu.org/licenses/>. --
kono
parents:
diff changeset
26 -- --
kono
parents:
diff changeset
27 -- GNAT was originally developed by the GNAT team at New York University. --
kono
parents:
diff changeset
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
kono
parents:
diff changeset
29 -- --
kono
parents:
diff changeset
30 ------------------------------------------------------------------------------
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 -- This package contains global flags set by the initialization routine from
kono
parents:
diff changeset
33 -- the command line and referenced throughout the compiler, the binder, or
kono
parents:
diff changeset
34 -- other GNAT tools. The comments indicate which options are used by which
kono
parents:
diff changeset
35 -- programs (GNAT, GNATBIND, GNATLINK, GNATMAKE, etc).
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 -- Some flags are labelled "PROJECT MANAGER". These are used by tools that
kono
parents:
diff changeset
38 -- use the Project Manager. These tools include gnatmake, gnatname, the gnat
kono
parents:
diff changeset
39 -- driver, gnatclean, gprbuild and gprclean.
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 with Hostparm; use Hostparm;
kono
parents:
diff changeset
42 with Types; use Types;
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 pragma Warnings (Off);
kono
parents:
diff changeset
45 -- This package is used also by gnatcoll
kono
parents:
diff changeset
46 with System.Strings; use System.Strings;
kono
parents:
diff changeset
47 with System.WCh_Con; use System.WCh_Con;
kono
parents:
diff changeset
48 pragma Warnings (On);
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 package Opt is
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 ----------------------
kono
parents:
diff changeset
53 -- Checksum Control --
kono
parents:
diff changeset
54 ----------------------
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 -- Checksums are computed for sources to check for sources being the same
kono
parents:
diff changeset
57 -- from a compilation point of view (e.g. spelling of identifiers and
kono
parents:
diff changeset
58 -- white space layout do not count in this computation).
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 -- The way the checksum is computed has evolved across the various versions
kono
parents:
diff changeset
61 -- of GNAT. When gprbuild is called with -m, the checksums must be computed
kono
parents:
diff changeset
62 -- the same way in gprbuild as it was in the GNAT version of the compiler.
kono
parents:
diff changeset
63 -- The different ways are
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 -- Version 6.4 and later:
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 -- The Accumulate_Token_Checksum procedure is called after each numeric
kono
parents:
diff changeset
68 -- literal and each identifier/keyword. For keywords, Tok_Identifier is
kono
parents:
diff changeset
69 -- used in the call to Accumulate_Token_Checksum.
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 -- Versions 5.04 to 6.3:
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 -- For keywords, the token value were used in the call to procedure
kono
parents:
diff changeset
74 -- Accumulate_Token_Checksum. Type Token_Type did not include Tok_Some.
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 -- Versions 5.03:
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 -- For keywords, the token value were used in the call to
kono
parents:
diff changeset
79 -- Accumulate_Token_Checksum. Type Token_Type did not include
kono
parents:
diff changeset
80 -- Tok_Interface, Tok_Overriding, Tok_Synchronized and Tok_Some.
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 -- Versions 5.02 and before:
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 -- No calls to procedure Accumulate_Token_Checksum (the checksum
kono
parents:
diff changeset
85 -- mechanism was introduced in version 5.03).
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 -- To signal to the scanner whether Accumulate_Token_Checksum needs to be
kono
parents:
diff changeset
88 -- called and what versions to call, the following Boolean flags are used:
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 Checksum_Accumulate_Token_Checksum : Boolean := True;
kono
parents:
diff changeset
91 -- GPRBUILD
kono
parents:
diff changeset
92 -- Set to False by gprbuild when the version of GNAT is 5.02 or before. If
kono
parents:
diff changeset
93 -- this switch is False, then we do not call Accumulate_Token_Checksum, so
kono
parents:
diff changeset
94 -- the setting of the following two flags is irrelevant.
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 Checksum_GNAT_6_3 : Boolean := False;
kono
parents:
diff changeset
97 -- GPRBUILD
kono
parents:
diff changeset
98 -- Set to True by gprbuild when the version of GNAT is 6.3 or before.
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 Checksum_GNAT_5_03 : Boolean := False;
kono
parents:
diff changeset
101 -- GPRBUILD
kono
parents:
diff changeset
102 -- Set to True by gprbuild when the version of GNAT is 5.03 or before.
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 Checksum_Accumulate_Limited_Checksum : Boolean := False;
kono
parents:
diff changeset
105 -- Used to control the computation of the limited view of a package.
kono
parents:
diff changeset
106 -- (Not currently used, possible optimization for ALI files of units
kono
parents:
diff changeset
107 -- in limited with_clauses).
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 ----------------------------------------------
kono
parents:
diff changeset
110 -- Settings of Modes for Current Processing --
kono
parents:
diff changeset
111 ----------------------------------------------
kono
parents:
diff changeset
112
kono
parents:
diff changeset
113 -- The following mode values represent the current state of processing.
kono
parents:
diff changeset
114 -- The values set here are the default values. Unless otherwise noted,
kono
parents:
diff changeset
115 -- the value may be reset in Switch-? with an appropriate switch. In
kono
parents:
diff changeset
116 -- some cases, the values can also be modified by pragmas, and in the
kono
parents:
diff changeset
117 -- case of some binder variables, Gnatbind.Scan_Bind_Arg may modify
kono
parents:
diff changeset
118 -- the default values.
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 Latest_Ada_Only : Boolean := False;
kono
parents:
diff changeset
121 -- If True, the only value valid for Ada_Version is Ada_Version_Type'Last,
kono
parents:
diff changeset
122 -- trying to specify other values will be ignored (in case of pragma
kono
parents:
diff changeset
123 -- Ada_xxx) or generate an error (in case of -gnat83/95/xx switches).
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 type Ada_Version_Type is (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2020);
kono
parents:
diff changeset
126 pragma Ordered (Ada_Version_Type);
kono
parents:
diff changeset
127 -- Versions of Ada for Ada_Version below. Note that these are ordered,
kono
parents:
diff changeset
128 -- so that tests like Ada_Version >= Ada_95 are legitimate and useful.
kono
parents:
diff changeset
129 -- Think twice before using "="; Ada_Version >= Ada_2012 is more likely
kono
parents:
diff changeset
130 -- what you want, because it will apply to future versions of the language.
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 Ada_Version_Default : constant Ada_Version_Type := Ada_2012;
kono
parents:
diff changeset
133 pragma Warnings (Off, Ada_Version_Default);
kono
parents:
diff changeset
134 -- GNAT
kono
parents:
diff changeset
135 -- Default Ada version if no switch given. The Warnings off is to kill
kono
parents:
diff changeset
136 -- constant condition warnings.
kono
parents:
diff changeset
137
kono
parents:
diff changeset
138 Ada_Version : Ada_Version_Type := Ada_Version_Default;
kono
parents:
diff changeset
139 -- GNAT
kono
parents:
diff changeset
140 -- Current Ada version for compiler, as set by configuration pragmas,
kono
parents:
diff changeset
141 -- compiler switches, or implicitly (to Ada_Version_Runtime) when a
kono
parents:
diff changeset
142 -- predefined or internal file is compiled.
kono
parents:
diff changeset
143
kono
parents:
diff changeset
144 Ada_Version_Pragma : Node_Id := Empty;
kono
parents:
diff changeset
145 -- Reflects the Ada_xxx pragma that resulted in setting Ada_Version. Used
kono
parents:
diff changeset
146 -- to specialize error messages complaining about the Ada version in use.
kono
parents:
diff changeset
147
kono
parents:
diff changeset
148 Ada_Version_Explicit : Ada_Version_Type := Ada_Version_Default;
kono
parents:
diff changeset
149 -- GNAT
kono
parents:
diff changeset
150 -- Like Ada_Version, but does not get set implicitly for predefined or
kono
parents:
diff changeset
151 -- internal units, so it reflects the Ada version explicitly set using
kono
parents:
diff changeset
152 -- configuration pragmas or compiler switches (or if neither appears, it
kono
parents:
diff changeset
153 -- remains set to Ada_Version_Default). This is used in the rare cases
kono
parents:
diff changeset
154 -- (notably pragma Obsolescent) where we want the explicit version set.
kono
parents:
diff changeset
155
kono
parents:
diff changeset
156 Ada_Version_Runtime : Ada_Version_Type := Ada_2012;
kono
parents:
diff changeset
157 -- GNAT
kono
parents:
diff changeset
158 -- Ada version used to compile the runtime. Used to set Ada_Version (but
kono
parents:
diff changeset
159 -- not Ada_Version_Explicit) when compiling predefined or internal units.
kono
parents:
diff changeset
160
kono
parents:
diff changeset
161 Ada_Final_Suffix : constant String := "final";
kono
parents:
diff changeset
162 Ada_Final_Name : String_Ptr := new String'("ada" & Ada_Final_Suffix);
kono
parents:
diff changeset
163 -- GNATBIND
kono
parents:
diff changeset
164 -- The name of the procedure that performs the finalization at the end of
kono
parents:
diff changeset
165 -- execution. This variable may be modified by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 Ada_Init_Suffix : constant String := "init";
kono
parents:
diff changeset
168 Ada_Init_Name : String_Ptr := new String'("ada" & Ada_Init_Suffix);
kono
parents:
diff changeset
169 -- GNATBIND
kono
parents:
diff changeset
170 -- The name of the procedure that performs initialization at the start
kono
parents:
diff changeset
171 -- of execution. This variable may be modified by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
172
kono
parents:
diff changeset
173 Ada_Main_Name_Suffix : constant String := "main";
kono
parents:
diff changeset
174 -- GNATBIND
kono
parents:
diff changeset
175 -- The suffix for Ada_Main_Name. Defined as a constant here so that it
kono
parents:
diff changeset
176 -- can be referenced in a uniform manner to create either the default
kono
parents:
diff changeset
177 -- value of Ada_Main_Name (declared below), or the non-default name
kono
parents:
diff changeset
178 -- set by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 Ada_Main_Name : String_Ptr := new String'("ada_" & Ada_Main_Name_Suffix);
kono
parents:
diff changeset
181 -- GNATBIND
kono
parents:
diff changeset
182 -- The name of the Ada package generated by the binder (when in Ada mode).
kono
parents:
diff changeset
183 -- This variable may be modified by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 Address_Clause_Overlay_Warnings : Boolean := True;
kono
parents:
diff changeset
186 -- GNAT
kono
parents:
diff changeset
187 -- Set False to disable address clause warnings. Modified by use of
kono
parents:
diff changeset
188 -- -gnatwo/O.
kono
parents:
diff changeset
189
kono
parents:
diff changeset
190 Address_Is_Private : Boolean := False;
kono
parents:
diff changeset
191 -- GNAT, GNATBIND
kono
parents:
diff changeset
192 -- Set True if package System has the line "type Address is private;"
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 All_Errors_Mode : Boolean := False;
kono
parents:
diff changeset
195 -- GNAT
kono
parents:
diff changeset
196 -- Flag set to force display of multiple errors on a single line and
kono
parents:
diff changeset
197 -- also repeated error messages for references to undefined identifiers
kono
parents:
diff changeset
198 -- and certain other repeated error messages. Set by use of -gnatf.
kono
parents:
diff changeset
199
kono
parents:
diff changeset
200 Allow_Integer_Address : Boolean := False;
kono
parents:
diff changeset
201 -- GNAT
kono
parents:
diff changeset
202 -- Allow use of integer expression in a context requiring System.Address.
kono
parents:
diff changeset
203 -- Set by the use of configuration pragma Allow_Integer_Address Also set
kono
parents:
diff changeset
204 -- in relaxed semantics mode for use by CodePeer or when -gnatd.M is used.
kono
parents:
diff changeset
205
kono
parents:
diff changeset
206 All_Sources : Boolean := False;
kono
parents:
diff changeset
207 -- GNATBIND
kono
parents:
diff changeset
208 -- Set to True to require all source files to be present. This flag is
kono
parents:
diff changeset
209 -- directly modified by gnatmake to affect the shared binder routines.
kono
parents:
diff changeset
210
kono
parents:
diff changeset
211 Alternate_Main_Name : String_Ptr := null;
kono
parents:
diff changeset
212 -- GNATBIND
kono
parents:
diff changeset
213 -- Set to non-null when Bind_Alternate_Main_Name is True. This value
kono
parents:
diff changeset
214 -- is modified as needed by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
215
kono
parents:
diff changeset
216 ASIS_GNSA_Mode : Boolean := False;
kono
parents:
diff changeset
217 -- GNAT
kono
parents:
diff changeset
218 -- Enable GNSA back-end processing assuming ASIS_Mode is already set to
kono
parents:
diff changeset
219 -- True. ASIS_GNSA mode suppresses the call to gigi.
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 ASIS_Mode : Boolean := False;
kono
parents:
diff changeset
222 -- GNAT
kono
parents:
diff changeset
223 -- Enable semantic checks and tree transformations that are important
kono
parents:
diff changeset
224 -- for ASIS but that are usually skipped if Operating_Mode is set to
kono
parents:
diff changeset
225 -- Check_Semantics. This flag does not have the corresponding option to set
kono
parents:
diff changeset
226 -- it ON. It is set ON when Tree_Output is set ON, it can also be set ON
kono
parents:
diff changeset
227 -- from the code of GNSA-based tool (a client may need to set ON the
kono
parents:
diff changeset
228 -- Back_Annotate_Rep_Info flag in this case. At the moment this does not
kono
parents:
diff changeset
229 -- make very much sense, because GNSA cannot do back annotation).
kono
parents:
diff changeset
230
kono
parents:
diff changeset
231 Assertions_Enabled : Boolean := False;
kono
parents:
diff changeset
232 -- GNAT
kono
parents:
diff changeset
233 -- Indicates default policy (True = Check, False = Ignore) to be applied
kono
parents:
diff changeset
234 -- to all assertion aspects and pragmas, and to pragma Debug, if there is
kono
parents:
diff changeset
235 -- no overriding Assertion_Policy, Check_Policy, or Debug_Policy pragma.
kono
parents:
diff changeset
236 -- Set True by use of -gnata.
kono
parents:
diff changeset
237
kono
parents:
diff changeset
238 Assume_No_Invalid_Values : Boolean := False;
kono
parents:
diff changeset
239 -- GNAT Normally, in accordance with (RM 13.9.1 (9-11)) the front end
kono
parents:
diff changeset
240 -- assumes that values could have invalid representations, unless it can
kono
parents:
diff changeset
241 -- clearly prove that the values are valid. If this switch is set (by
kono
parents:
diff changeset
242 -- pragma Assume_No_Invalid_Values (On)), then the compiler assumes values
kono
parents:
diff changeset
243 -- are valid and in range of their representations. This feature is now
kono
parents:
diff changeset
244 -- fully enabled in the compiler.
kono
parents:
diff changeset
245
kono
parents:
diff changeset
246 Back_Annotate_Rep_Info : Boolean := False;
kono
parents:
diff changeset
247 -- GNAT
kono
parents:
diff changeset
248 -- If set True, enables back annotation of representation information
kono
parents:
diff changeset
249 -- by gigi, even in -gnatc mode. This is set True by the use of -gnatR
kono
parents:
diff changeset
250 -- (list representation information) or -gnatt (generate tree). It is
kono
parents:
diff changeset
251 -- also set true if certain Unchecked_Conversion instantiations require
kono
parents:
diff changeset
252 -- checking based on annotated values.
kono
parents:
diff changeset
253
kono
parents:
diff changeset
254 Back_End_Handles_Limited_Types : Boolean;
kono
parents:
diff changeset
255 -- This flag is set true if the back end can properly handle limited or
kono
parents:
diff changeset
256 -- other by reference types, and avoid copies. If this flag is False, then
kono
parents:
diff changeset
257 -- the front end does special expansion for if/case expressions to make
kono
parents:
diff changeset
258 -- sure that no copy occurs. If the flag is True, then the expansion for
kono
parents:
diff changeset
259 -- if and case expressions relies on the back end properly handling things.
kono
parents:
diff changeset
260 -- Currently the default is False for all cases (set in gnat1drv). The
kono
parents:
diff changeset
261 -- default can be modified using -gnatd.L (sets the flag True). This is
kono
parents:
diff changeset
262 -- used to test the possibility of having the backend handle this.
kono
parents:
diff changeset
263
kono
parents:
diff changeset
264 Back_End_Inlining : Boolean := False;
kono
parents:
diff changeset
265 -- GNAT
kono
parents:
diff changeset
266 -- Set True to activate inlining by back-end expansion. This is the normal
kono
parents:
diff changeset
267 -- default mode for gcc targets, so it is True on such targets unless the
kono
parents:
diff changeset
268 -- switches -gnatN or -gnatd.z are used. See circuitry in gnat1drv for the
kono
parents:
diff changeset
269 -- exact conditions for setting this switch.
kono
parents:
diff changeset
270
kono
parents:
diff changeset
271 Bind_Alternate_Main_Name : Boolean := False;
kono
parents:
diff changeset
272 -- GNATBIND
kono
parents:
diff changeset
273 -- True if main should be called Alternate_Main_Name.all.
kono
parents:
diff changeset
274 -- This variable may be set to True by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 Bind_Main_Program : Boolean := True;
kono
parents:
diff changeset
277 -- GNATBIND
kono
parents:
diff changeset
278 -- Set to False if not binding main Ada program
kono
parents:
diff changeset
279
kono
parents:
diff changeset
280 Bind_For_Library : Boolean := False;
kono
parents:
diff changeset
281 -- GNATBIND
kono
parents:
diff changeset
282 -- Set to True if the binder needs to generate a file designed for building
kono
parents:
diff changeset
283 -- a library. May be set to True by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
284
kono
parents:
diff changeset
285 Bind_Only : Boolean := False;
kono
parents:
diff changeset
286 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
287 -- Set to True to skip compile and link steps
kono
parents:
diff changeset
288 -- (except when Compile_Only and/or Link_Only are True).
kono
parents:
diff changeset
289
kono
parents:
diff changeset
290 Blank_Deleted_Lines : Boolean := False;
kono
parents:
diff changeset
291 -- GNAT, GNATPREP
kono
parents:
diff changeset
292 -- Output empty lines for each line of preprocessed input that is deleted
kono
parents:
diff changeset
293 -- in the output, including preprocessor lines starting with a '#'.
kono
parents:
diff changeset
294
kono
parents:
diff changeset
295 Brief_Output : Boolean := False;
kono
parents:
diff changeset
296 -- GNAT, GNATBIND
kono
parents:
diff changeset
297 -- Force brief error messages to standard error, even if verbose mode is
kono
parents:
diff changeset
298 -- set (so that main error messages go to standard output).
kono
parents:
diff changeset
299
kono
parents:
diff changeset
300 Build_Bind_And_Link_Full_Project : Boolean := False;
kono
parents:
diff changeset
301 -- GNATMAKE
kono
parents:
diff changeset
302 -- Set to True to build, bind and link all the sources of a project file
kono
parents:
diff changeset
303 -- (switch -B)
kono
parents:
diff changeset
304
kono
parents:
diff changeset
305 Check_Aliasing_Of_Parameters : Boolean := False;
kono
parents:
diff changeset
306 -- GNAT
kono
parents:
diff changeset
307 -- Set to True to detect whether subprogram parameters and function results
kono
parents:
diff changeset
308 -- alias the same object(s).
kono
parents:
diff changeset
309
kono
parents:
diff changeset
310 Check_Float_Overflow : Boolean := False;
kono
parents:
diff changeset
311 -- GNAT
kono
parents:
diff changeset
312 -- Set to True to check that operations on predefined unconstrained float
kono
parents:
diff changeset
313 -- types (e.g. Float, Long_Float) do not overflow and generate infinities
kono
parents:
diff changeset
314 -- or invalid values. Set by the Check_Float_Overflow pragma, or by use
kono
parents:
diff changeset
315 -- of the -gnateF switch.
kono
parents:
diff changeset
316
kono
parents:
diff changeset
317 Check_Object_Consistency : Boolean := False;
kono
parents:
diff changeset
318 -- GNATBIND, GNATMAKE
kono
parents:
diff changeset
319 -- Set to True to check whether every object file is consistent with its
kono
parents:
diff changeset
320 -- corresponding ada library information (ALI) file. An object file is
kono
parents:
diff changeset
321 -- inconsistent with the corresponding ALI file if the object file does
kono
parents:
diff changeset
322 -- not exist or if it has an older time stamp than the ALI file. Default
kono
parents:
diff changeset
323 -- above is for GNATBIND. GNATMAKE overrides this default to True (see
kono
parents:
diff changeset
324 -- Make.Initialize) since we normally do need to check source consistencies
kono
parents:
diff changeset
325 -- in gnatmake.
kono
parents:
diff changeset
326
kono
parents:
diff changeset
327 Check_Only : Boolean := False;
kono
parents:
diff changeset
328 -- GNATBIND
kono
parents:
diff changeset
329 -- Set to True to do checks only, no output of binder file
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 Check_Policy_List : Node_Id := Empty;
kono
parents:
diff changeset
332 -- GNAT
kono
parents:
diff changeset
333 -- This points to the list of N_Pragma nodes for Check_Policy pragmas
kono
parents:
diff changeset
334 -- that are linked through the Next_Pragma fields, with the list being
kono
parents:
diff changeset
335 -- terminated by Empty. The order is most recently processed first. Note
kono
parents:
diff changeset
336 -- that Push_Scope and Pop_Scope in Sem_Ch8 save and restore the value
kono
parents:
diff changeset
337 -- of this variable, implementing the required scope control for pragmas
kono
parents:
diff changeset
338 -- appearing in a declarative part.
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 Check_Readonly_Files : Boolean := False;
kono
parents:
diff changeset
341 -- GNATMAKE
kono
parents:
diff changeset
342 -- Set to True to check readonly files during the make process
kono
parents:
diff changeset
343
kono
parents:
diff changeset
344 Check_Source_Files : Boolean := True;
kono
parents:
diff changeset
345 -- GNATBIND, GNATMAKE
kono
parents:
diff changeset
346 -- Set to True to enable consistency checking for any source files that
kono
parents:
diff changeset
347 -- are present (i.e. date must match the date in the library info file).
kono
parents:
diff changeset
348 -- Set to False for object file consistency check only. This flag is
kono
parents:
diff changeset
349 -- directly modified by gnatmake, to affect the shared binder routines.
kono
parents:
diff changeset
350
kono
parents:
diff changeset
351 Check_Switches : Boolean := False;
kono
parents:
diff changeset
352 -- GNATMAKE, GPBUILD
kono
parents:
diff changeset
353 -- Set to True to check compiler options during the make process
kono
parents:
diff changeset
354
kono
parents:
diff changeset
355 Check_Unreferenced : Boolean := False;
kono
parents:
diff changeset
356 -- GNAT
kono
parents:
diff changeset
357 -- Set to True to enable checking for unreferenced entities other
kono
parents:
diff changeset
358 -- than formal parameters (for which see Check_Unreferenced_Formals)
kono
parents:
diff changeset
359 -- Modified by use of -gnatwu/U.
kono
parents:
diff changeset
360
kono
parents:
diff changeset
361 Check_Unreferenced_Formals : Boolean := False;
kono
parents:
diff changeset
362 -- GNAT
kono
parents:
diff changeset
363 -- Set to True to check for unreferenced formals. This is turned on by
kono
parents:
diff changeset
364 -- -gnatwa/wf/wu and turned off by -gnatwA/wF/wU.
kono
parents:
diff changeset
365
kono
parents:
diff changeset
366 Check_Validity_Of_Parameters : Boolean := False;
kono
parents:
diff changeset
367 -- GNAT
kono
parents:
diff changeset
368 -- Set to True to check for proper scalar initialization of subprogram
kono
parents:
diff changeset
369 -- parameters on both entry and exit. This is turned on by -gnateV.
kono
parents:
diff changeset
370
kono
parents:
diff changeset
371 Check_Withs : Boolean := False;
kono
parents:
diff changeset
372 -- GNAT
kono
parents:
diff changeset
373 -- Set to True to enable checking for unused withs, and also the case
kono
parents:
diff changeset
374 -- of withing a package and using none of the entities in the package.
kono
parents:
diff changeset
375 -- Modified by use of -gnatwu/U.
kono
parents:
diff changeset
376
kono
parents:
diff changeset
377 CodePeer_Mode : Boolean := False;
kono
parents:
diff changeset
378 -- GNAT, GNATBIND, GPRBUILD
kono
parents:
diff changeset
379 -- Enable full CodePeer mode (SCIL generation, disable switches that
kono
parents:
diff changeset
380 -- interact badly with it, etc...). This is turned on by -gnatC.
kono
parents:
diff changeset
381
kono
parents:
diff changeset
382 Commands_To_Stdout : Boolean := False;
kono
parents:
diff changeset
383 -- GNATMAKE
kono
parents:
diff changeset
384 -- True if echoed commands to be written to stdout instead of stderr
kono
parents:
diff changeset
385
kono
parents:
diff changeset
386 Comment_Deleted_Lines : Boolean := False;
kono
parents:
diff changeset
387 -- GNATPREP
kono
parents:
diff changeset
388 -- True if source lines removed by the preprocessor should be commented
kono
parents:
diff changeset
389 -- in the output file.
kono
parents:
diff changeset
390
kono
parents:
diff changeset
391 Compilation_Time : String (1 .. 19);
kono
parents:
diff changeset
392 -- GNAT
kono
parents:
diff changeset
393 -- Compilation date and time in form YYYY-MM-DD HH:MM:SS
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 Compile_Only : Boolean := False;
kono
parents:
diff changeset
396 -- GNATMAKE, GNATCLEAN, GPBUILD, GPRCLEAN
kono
parents:
diff changeset
397 -- GNATMAKE, GPRBUILD:
kono
parents:
diff changeset
398 -- set True to skip bind and link steps (except when Bind_Only is True)
kono
parents:
diff changeset
399 -- GNATCLEAN, GPRCLEAN:
kono
parents:
diff changeset
400 -- set True to delete only the files produced by the compiler but not the
kono
parents:
diff changeset
401 -- library files or the executable files.
kono
parents:
diff changeset
402
kono
parents:
diff changeset
403 Compiler_Unit : Boolean := False;
kono
parents:
diff changeset
404 -- GNAT1
kono
parents:
diff changeset
405 -- Set True by an occurrence of pragma Compiler_Unit_Warning (or of the
kono
parents:
diff changeset
406 -- obsolete pragma Compiler_Unit) in the main unit. Once set True, stays
kono
parents:
diff changeset
407 -- True, since any units that are with'ed directly or indirectly by
kono
parents:
diff changeset
408 -- a Compiler_Unit_Warning main unit are subject to the same restrictions.
kono
parents:
diff changeset
409 -- Such units really should have their own pragmas, but we do not bother to
kono
parents:
diff changeset
410 -- check for that, so this transitivity provides extra checking.
kono
parents:
diff changeset
411
kono
parents:
diff changeset
412 Config_File : Boolean := True;
kono
parents:
diff changeset
413 -- GNAT
kono
parents:
diff changeset
414 -- Set to False to inhibit reading and processing of gnat.adc file
kono
parents:
diff changeset
415
kono
parents:
diff changeset
416 Config_File_Names : String_List_Access := null;
kono
parents:
diff changeset
417 -- GNAT
kono
parents:
diff changeset
418 -- Names of configuration pragmas files (given by switches -gnatec)
kono
parents:
diff changeset
419
kono
parents:
diff changeset
420 Configurable_Run_Time_Mode : Boolean := False;
kono
parents:
diff changeset
421 -- GNAT, GNATBIND
kono
parents:
diff changeset
422 -- Set True if the compiler is operating in configurable run-time mode.
kono
parents:
diff changeset
423 -- This happens if the flag Targparm.Configurable_Run_TimeMode_On_Target
kono
parents:
diff changeset
424 -- is set True, or if pragma No_Run_Time is used. See the spec of Rtsfind
kono
parents:
diff changeset
425 -- for details on the handling of the latter pragma.
kono
parents:
diff changeset
426
kono
parents:
diff changeset
427 Constant_Condition_Warnings : Boolean := False;
kono
parents:
diff changeset
428 -- GNAT
kono
parents:
diff changeset
429 -- Set to True to activate warnings on constant conditions. Modified by
kono
parents:
diff changeset
430 -- use of -gnatwc/C.
kono
parents:
diff changeset
431
kono
parents:
diff changeset
432 Create_Mapping_File : Boolean := False;
kono
parents:
diff changeset
433 -- GNATMAKE
kono
parents:
diff changeset
434 -- Set to True (-C switch) to indicate that the compiler will be invoked
kono
parents:
diff changeset
435 -- with a mapping file (-gnatem compiler switch).
kono
parents:
diff changeset
436
kono
parents:
diff changeset
437 subtype Debug_Level_Value is Nat range 0 .. 3;
kono
parents:
diff changeset
438 Debugger_Level : Debug_Level_Value := 0;
kono
parents:
diff changeset
439 -- GNAT, GNATBIND
kono
parents:
diff changeset
440 -- The value given to the -g parameter. The default value for -g with
kono
parents:
diff changeset
441 -- no value is 2. If no -g is specified, defaults to 0.
kono
parents:
diff changeset
442 -- Note that the generated code should never depend on this variable,
kono
parents:
diff changeset
443 -- since we want debug info to be nonintrusive on the generate code.
kono
parents:
diff changeset
444
kono
parents:
diff changeset
445 Default_Exit_Status : Int := 0;
kono
parents:
diff changeset
446 -- GNATBIND
kono
parents:
diff changeset
447 -- Set the default exit status value. Set by the -Xnnn switch for the
kono
parents:
diff changeset
448 -- binder.
kono
parents:
diff changeset
449
kono
parents:
diff changeset
450 Debug_Generated_Code : Boolean := False;
kono
parents:
diff changeset
451 -- GNAT
kono
parents:
diff changeset
452 -- Set True (-gnatD switch) to debug generated expanded code instead
kono
parents:
diff changeset
453 -- of the original source code. Causes debugging information to be
kono
parents:
diff changeset
454 -- written with respect to the generated code file that is written.
kono
parents:
diff changeset
455
kono
parents:
diff changeset
456 Default_Pool : Node_Id := Empty;
kono
parents:
diff changeset
457 -- GNAT
kono
parents:
diff changeset
458 -- Used to record the storage pool name (or null literal) that is the
kono
parents:
diff changeset
459 -- argument of an applicable pragma Default_Storage_Pool.
kono
parents:
diff changeset
460 -- Empty: No pragma Default_Storage_Pool applies.
kono
parents:
diff changeset
461 -- N_Null node: "pragma Default_Storage_Pool (null);" applies.
kono
parents:
diff changeset
462 -- otherwise: "pragma Default_Storage_Pool (X);" applies, and
kono
parents:
diff changeset
463 -- this points to the name X.
kono
parents:
diff changeset
464 -- Push_Scope and Pop_Scope in Sem_Ch8 save and restore this value.
kono
parents:
diff changeset
465
kono
parents:
diff changeset
466 No_Stack_Size : constant := -1;
kono
parents:
diff changeset
467
kono
parents:
diff changeset
468 Default_Stack_Size : Int := No_Stack_Size;
kono
parents:
diff changeset
469 -- GNATBIND
kono
parents:
diff changeset
470 -- Set to default primary stack size in units of bytes. Set by the -dnnn
kono
parents:
diff changeset
471 -- switch for the binder. A value of No_Stack_Size indicates that
kono
parents:
diff changeset
472 -- no default was set by the binder.
kono
parents:
diff changeset
473
kono
parents:
diff changeset
474 Default_Sec_Stack_Size : Int := No_Stack_Size;
kono
parents:
diff changeset
475 -- GNATBIND
kono
parents:
diff changeset
476 -- Set to default secondary stack size in units of bytes. Set by the -Dnnn
kono
parents:
diff changeset
477 -- switch for the binder. A value of No_Stack_Size indicates that no
kono
parents:
diff changeset
478 -- default was set by the binder and the run-time value should be used
kono
parents:
diff changeset
479 -- instead.
kono
parents:
diff changeset
480
kono
parents:
diff changeset
481 Default_SSO : Character := ' ';
kono
parents:
diff changeset
482 -- GNAT
kono
parents:
diff changeset
483 -- Set if a pragma Default_Scalar_Storage_Order has been given. The value
kono
parents:
diff changeset
484 -- of ' ' indicates that no default has been set, otherwise the value is
kono
parents:
diff changeset
485 -- either 'H' for High_Order_First or 'L' for Lower_Order_First.
kono
parents:
diff changeset
486
kono
parents:
diff changeset
487 Detect_Blocking : Boolean := False;
kono
parents:
diff changeset
488 -- GNAT
kono
parents:
diff changeset
489 -- Set True to force the run time to raise Program_Error if calls to
kono
parents:
diff changeset
490 -- potentially blocking operations are detected from protected actions.
kono
parents:
diff changeset
491
kono
parents:
diff changeset
492 Directories_Must_Exist_In_Projects : Boolean := True;
kono
parents:
diff changeset
493 -- PROJECT MANAGER
kono
parents:
diff changeset
494 -- Set to False with switch -f of gnatclean and gprclean
kono
parents:
diff changeset
495
kono
parents:
diff changeset
496 Display_Compilation_Progress : Boolean := False;
kono
parents:
diff changeset
497 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
498 -- Set True (-d switch) to display information on progress while compiling
kono
parents:
diff changeset
499 -- files. Internal flag to be used in conjunction with an IDE (e.g GPS).
kono
parents:
diff changeset
500
kono
parents:
diff changeset
501 type Distribution_Stub_Mode_Type is
kono
parents:
diff changeset
502 -- GNAT
kono
parents:
diff changeset
503 (No_Stubs,
kono
parents:
diff changeset
504 -- Normal mode, no generation/compilation of distribution stubs
kono
parents:
diff changeset
505
kono
parents:
diff changeset
506 Generate_Receiver_Stub_Body,
kono
parents:
diff changeset
507 -- The unit being compiled is the RCI body, and the compiler will
kono
parents:
diff changeset
508 -- generate the body for the receiver stubs and compile it.
kono
parents:
diff changeset
509
kono
parents:
diff changeset
510 Generate_Caller_Stub_Body);
kono
parents:
diff changeset
511 -- The unit being compiled is the RCI spec, and the compiler will
kono
parents:
diff changeset
512 -- generate the body for the caller stubs and compile it.
kono
parents:
diff changeset
513
kono
parents:
diff changeset
514 Distribution_Stub_Mode : Distribution_Stub_Mode_Type := No_Stubs;
kono
parents:
diff changeset
515 -- GNAT
kono
parents:
diff changeset
516 -- This enumeration variable indicates the five states of distribution
kono
parents:
diff changeset
517 -- annex stub generation/compilation.
kono
parents:
diff changeset
518
kono
parents:
diff changeset
519 Do_Not_Execute : Boolean := False;
kono
parents:
diff changeset
520 -- GNATMAKE
kono
parents:
diff changeset
521 -- Set to True if no actual compilations should be undertaken
kono
parents:
diff changeset
522
kono
parents:
diff changeset
523 Dump_Source_Text : Boolean := False;
kono
parents:
diff changeset
524 -- GNAT
kono
parents:
diff changeset
525 -- Set to True (by -gnatL) to dump source text intermingled with generated
kono
parents:
diff changeset
526 -- code. Effective only if either of Debug/Print_Generated_Code is true.
kono
parents:
diff changeset
527
kono
parents:
diff changeset
528 Dynamic_Elaboration_Checks : Boolean := False;
kono
parents:
diff changeset
529 -- GNAT
kono
parents:
diff changeset
530 -- Set True for dynamic elaboration checking mode, as set by the -gnatE
kono
parents:
diff changeset
531 -- switch or by the use of pragma Elaboration_Checks (Dynamic).
kono
parents:
diff changeset
532
kono
parents:
diff changeset
533 Dynamic_Stack_Measurement : Boolean := False;
kono
parents:
diff changeset
534 -- GNATBIND
kono
parents:
diff changeset
535 -- Set True to enable dynamic stack measurement (-u flag for gnatbind)
kono
parents:
diff changeset
536
kono
parents:
diff changeset
537 Dynamic_Stack_Measurement_Array_Size : Nat := 100;
kono
parents:
diff changeset
538 -- GNATBIND
kono
parents:
diff changeset
539 -- Number of measurements we want to store during dynamic stack analysis.
kono
parents:
diff changeset
540 -- When the buffer is full, non-storable results will be output on the fly.
kono
parents:
diff changeset
541 -- The value is relevant only if Dynamic_Stack_Measurement is set. Set
kono
parents:
diff changeset
542 -- by processing of -u flag for gnatbind.
kono
parents:
diff changeset
543
kono
parents:
diff changeset
544 Elab_Dependency_Output : Boolean := False;
kono
parents:
diff changeset
545 -- GNATBIND
kono
parents:
diff changeset
546 -- Set to True to output complete list of elaboration constraints
kono
parents:
diff changeset
547
kono
parents:
diff changeset
548 Elab_Order_Output : Boolean := False;
kono
parents:
diff changeset
549 -- GNATBIND
kono
parents:
diff changeset
550 -- Set to True to output chosen elaboration order
kono
parents:
diff changeset
551
kono
parents:
diff changeset
552 Elab_Info_Messages : Boolean := False;
kono
parents:
diff changeset
553 -- GNAT
kono
parents:
diff changeset
554 -- Set to True to output info messages for static elabmodel (-gnatel)
kono
parents:
diff changeset
555
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
556 Elab_Warnings : Boolean := True;
111
kono
parents:
diff changeset
557 -- GNAT
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
558 -- Set to True to generate elaboration warnings (-gnatwl). The warnings are
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
559 -- enabled by default because they carry the same importance as errors. The
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
560 -- compiler cannot emit actual errors because elaboration diagnostics need
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
561 -- dataflow analysis, which is not available. This behavior parallels that
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
562 -- of the old ABE mechanism.
111
kono
parents:
diff changeset
563
kono
parents:
diff changeset
564 Error_Msg_Line_Length : Nat := 0;
kono
parents:
diff changeset
565 -- GNAT
kono
parents:
diff changeset
566 -- Records the error message line length limit. If this is set to zero,
kono
parents:
diff changeset
567 -- then we get the old style behavior, in which each call to the error
kono
parents:
diff changeset
568 -- message routines generates one line of output as a separate message.
kono
parents:
diff changeset
569 -- If it is set to a non-zero value, then continuation lines are folded
kono
parents:
diff changeset
570 -- to make a single long message, and then this message is split up into
kono
parents:
diff changeset
571 -- multiple lines not exceeding the specified length. Set by -gnatj=nn.
kono
parents:
diff changeset
572
kono
parents:
diff changeset
573 Error_To_Warning : Boolean := False;
kono
parents:
diff changeset
574 -- GNAT
kono
parents:
diff changeset
575 -- If True, then certain error messages (e.g. parameter overlap messages
kono
parents:
diff changeset
576 -- for procedure calls in Ada 2012 mode) are treated as warnings instead
kono
parents:
diff changeset
577 -- of errors. Set by debug flag -gnatd.E. A search for Error_To_Warning
kono
parents:
diff changeset
578 -- will identify affected messages.
kono
parents:
diff changeset
579
kono
parents:
diff changeset
580 Exception_Handler_Encountered : Boolean := False;
kono
parents:
diff changeset
581 -- GNAT
kono
parents:
diff changeset
582 -- This flag is set true if the parser encounters an exception handler.
kono
parents:
diff changeset
583 -- It is used to set Warn_On_Exception_Propagation True if the restriction
kono
parents:
diff changeset
584 -- No_Exception_Propagation is set.
kono
parents:
diff changeset
585
kono
parents:
diff changeset
586 Exception_Extra_Info : Boolean := False;
kono
parents:
diff changeset
587 -- GNAT
kono
parents:
diff changeset
588 -- True when switch -gnateE is used. When True, generate extra information
kono
parents:
diff changeset
589 -- associated with exception messages (in particular range and index
kono
parents:
diff changeset
590 -- checks).
kono
parents:
diff changeset
591
kono
parents:
diff changeset
592 Exception_Locations_Suppressed : Boolean := False;
kono
parents:
diff changeset
593 -- GNAT
kono
parents:
diff changeset
594 -- Set to True if a Suppress_Exception_Locations configuration pragma is
kono
parents:
diff changeset
595 -- currently active.
kono
parents:
diff changeset
596
kono
parents:
diff changeset
597 type Exception_Mechanism_Type is
kono
parents:
diff changeset
598 -- Determines the kind of mechanism used to handle exceptions
kono
parents:
diff changeset
599 --
kono
parents:
diff changeset
600 (Front_End_SJLJ,
kono
parents:
diff changeset
601 -- Exceptions use setjmp/longjmp generated explicitly by the front end
kono
parents:
diff changeset
602 -- (this includes gigi or other equivalent parts of the code generator).
kono
parents:
diff changeset
603 -- AT END handlers are converted into exception handlers by the front
kono
parents:
diff changeset
604 -- end in this mode.
kono
parents:
diff changeset
605
kono
parents:
diff changeset
606 Back_End_ZCX,
kono
parents:
diff changeset
607 -- Exceptions are handled by the back end. The front end simply
kono
parents:
diff changeset
608 -- generates the handlers as they appear in the source, and AT END
kono
parents:
diff changeset
609 -- handlers are left untouched (they are not converted into exception
kono
parents:
diff changeset
610 -- handlers when operating in this mode). Propagation is performed
kono
parents:
diff changeset
611 -- using a frame unwinding scheme and requires no particular setup code
kono
parents:
diff changeset
612 -- at handler sites on regular execution paths.
kono
parents:
diff changeset
613
kono
parents:
diff changeset
614 Back_End_SJLJ);
kono
parents:
diff changeset
615 -- Similar to Back_End_ZCX with respect to the front-end processing
kono
parents:
diff changeset
616 -- of regular and AT-END handlers. A setjmp/longjmp scheme is used to
kono
parents:
diff changeset
617 -- propagate and setup handler contexts on regular execution paths.
kono
parents:
diff changeset
618
kono
parents:
diff changeset
619 pragma Convention (C, Exception_Mechanism_Type);
kono
parents:
diff changeset
620
kono
parents:
diff changeset
621 Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ;
kono
parents:
diff changeset
622 -- GNAT
kono
parents:
diff changeset
623 -- Set to the appropriate value depending on the flags in system.ads
kono
parents:
diff changeset
624 -- (Frontend_Exceptions + ZCX_By_Default). The C convention is there to
kono
parents:
diff changeset
625 -- allow access by gigi.
kono
parents:
diff changeset
626
kono
parents:
diff changeset
627 function Back_End_Exceptions return Boolean;
kono
parents:
diff changeset
628 function Front_End_Exceptions return Boolean;
kono
parents:
diff changeset
629 function ZCX_Exceptions return Boolean;
kono
parents:
diff changeset
630 function SJLJ_Exceptions return Boolean;
kono
parents:
diff changeset
631 -- GNAT
kono
parents:
diff changeset
632 -- Various properties of the active Exception_Mechanism
kono
parents:
diff changeset
633
kono
parents:
diff changeset
634 Exception_Tracebacks : Boolean := False;
kono
parents:
diff changeset
635 -- GNATBIND
kono
parents:
diff changeset
636 -- Set to True to store tracebacks in exception occurrences (-Ea or -E)
kono
parents:
diff changeset
637
kono
parents:
diff changeset
638 Exception_Tracebacks_Symbolic : Boolean := False;
kono
parents:
diff changeset
639 -- GNATBIND
kono
parents:
diff changeset
640 -- Set to True to store tracebacks in exception occurrences and enable
kono
parents:
diff changeset
641 -- symbolic tracebacks (-Es).
kono
parents:
diff changeset
642
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
643 Expand_Nonbinary_Modular_Ops : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
644 -- Set to True to convert nonbinary modular additions into code
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
645 -- that relies on the front-end expansion of operator Mod.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
646
111
kono
parents:
diff changeset
647 Extensions_Allowed : Boolean := False;
kono
parents:
diff changeset
648 -- GNAT
kono
parents:
diff changeset
649 -- Set to True by switch -gnatX if GNAT specific language extensions
kono
parents:
diff changeset
650 -- are allowed. Currently there are no such defined extensions.
kono
parents:
diff changeset
651
kono
parents:
diff changeset
652 type External_Casing_Type is (
kono
parents:
diff changeset
653 As_Is, -- External names cased as they appear in the Ada source
kono
parents:
diff changeset
654 Uppercase, -- External names forced to all uppercase letters
kono
parents:
diff changeset
655 Lowercase); -- External names forced to all lowercase letters
kono
parents:
diff changeset
656
kono
parents:
diff changeset
657 External_Name_Imp_Casing : External_Casing_Type := Lowercase;
kono
parents:
diff changeset
658 -- GNAT
kono
parents:
diff changeset
659 -- The setting of this flag determines the casing of external names
kono
parents:
diff changeset
660 -- when the name is implicitly derived from an entity name (i.e. either
kono
parents:
diff changeset
661 -- no explicit External_Name or Link_Name argument is used, or, in the
kono
parents:
diff changeset
662 -- case of extended DEC pragmas, the external name is given using an
kono
parents:
diff changeset
663 -- identifier. The As_Is setting is not permitted here (since this would
kono
parents:
diff changeset
664 -- create Ada source programs that were case sensitive).
kono
parents:
diff changeset
665
kono
parents:
diff changeset
666 External_Name_Exp_Casing : External_Casing_Type := As_Is;
kono
parents:
diff changeset
667 -- GNAT
kono
parents:
diff changeset
668 -- The setting of this flag determines the casing of an external name
kono
parents:
diff changeset
669 -- specified explicitly with a string literal. As_Is means the string
kono
parents:
diff changeset
670 -- literal is used as given with no modification to the casing. If
kono
parents:
diff changeset
671 -- Lowercase or Uppercase is set, then the string is forced to all
kono
parents:
diff changeset
672 -- lowercase or all uppercase letters as appropriate. Note that this
kono
parents:
diff changeset
673 -- setting has no effect if the external name is given using an identifier
kono
parents:
diff changeset
674 -- in the case of extended DEC import/export pragmas (in this case the
kono
parents:
diff changeset
675 -- casing is controlled by External_Name_Imp_Casing), and also has no
kono
parents:
diff changeset
676 -- effect if an explicit Link_Name is supplied (a link name is always
kono
parents:
diff changeset
677 -- used exactly as given).
kono
parents:
diff changeset
678
kono
parents:
diff changeset
679 External_Unit_Compilation_Allowed : Boolean := False;
kono
parents:
diff changeset
680 -- GNATMAKE
kono
parents:
diff changeset
681 -- When True (set by gnatmake switch -x), allow compilation of sources
kono
parents:
diff changeset
682 -- that are not part of any project file.
kono
parents:
diff changeset
683
kono
parents:
diff changeset
684 Fast_Math : Boolean := False;
kono
parents:
diff changeset
685 -- GNAT
kono
parents:
diff changeset
686 -- Indicates the current setting of Fast_Math mode, as set by the use
kono
parents:
diff changeset
687 -- of a Fast_Math pragma (set True by Fast_Math (On)).
kono
parents:
diff changeset
688
kono
parents:
diff changeset
689 Force_ALI_Tree_File : Boolean := False;
kono
parents:
diff changeset
690 -- GNAT
kono
parents:
diff changeset
691 -- Force generation of ALI file even if errors are encountered. Also forces
kono
parents:
diff changeset
692 -- generation of tree file if -gnatt is also set. Set on by use of -gnatQ.
kono
parents:
diff changeset
693
kono
parents:
diff changeset
694 Disable_ALI_File : Boolean := False;
kono
parents:
diff changeset
695 -- GNAT
kono
parents:
diff changeset
696 -- Disable generation of ALI file
kono
parents:
diff changeset
697
kono
parents:
diff changeset
698 Follow_Links_For_Files : Boolean := False;
kono
parents:
diff changeset
699 -- PROJECT MANAGER
kono
parents:
diff changeset
700 -- Set to True (-eL) to process the project files in trusted mode. If
kono
parents:
diff changeset
701 -- Follow_Links is False, it is assumed that the project doesn't contain
kono
parents:
diff changeset
702 -- any file duplicated through symbolic links (although the latter are
kono
parents:
diff changeset
703 -- still valid if they point to a file which is outside of the project),
kono
parents:
diff changeset
704 -- and that no directory has a name which is a valid source name.
kono
parents:
diff changeset
705
kono
parents:
diff changeset
706 Follow_Links_For_Dirs : Boolean := False;
kono
parents:
diff changeset
707 -- PROJECT MANAGER
kono
parents:
diff changeset
708 -- Set to True if directories can be links in this project, and therefore
kono
parents:
diff changeset
709 -- additional system calls must be performed to ensure that we always see
kono
parents:
diff changeset
710 -- the same full name for each directory.
kono
parents:
diff changeset
711
kono
parents:
diff changeset
712 Force_Checking_Of_Elaboration_Flags : Boolean := False;
kono
parents:
diff changeset
713 -- GNATBIND
kono
parents:
diff changeset
714 -- True if binding with forced checking of the elaboration flags
kono
parents:
diff changeset
715 -- (-F switch set).
kono
parents:
diff changeset
716
kono
parents:
diff changeset
717 Force_Compilations : Boolean := False;
kono
parents:
diff changeset
718 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
719 -- Set to force recompilations even when the objects are up-to-date.
kono
parents:
diff changeset
720
kono
parents:
diff changeset
721 Force_Elab_Order_File : String_Ptr := null;
kono
parents:
diff changeset
722 -- GNATBIND
kono
parents:
diff changeset
723 -- File name specified for -f switch (the forced elaboration order file)
kono
parents:
diff changeset
724
kono
parents:
diff changeset
725 Front_End_Inlining : Boolean := False;
kono
parents:
diff changeset
726 -- GNAT
kono
parents:
diff changeset
727 -- Set True to activate inlining by front-end expansion (even on GCC
kono
parents:
diff changeset
728 -- targets, where inlining is normally handled by the back end). Set by
kono
parents:
diff changeset
729 -- the flag -gnatN (which is now considered obsolescent, since the GCC
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
730 -- back end can do a better job of inlining than the front end these days).
111
kono
parents:
diff changeset
731
kono
parents:
diff changeset
732 Full_Path_Name_For_Brief_Errors : Boolean := False;
kono
parents:
diff changeset
733 -- PROJECT MANAGER
kono
parents:
diff changeset
734 -- When True, in Brief_Output mode, each error message line will start with
kono
parents:
diff changeset
735 -- the full path name of the source. When False, only the file name without
kono
parents:
diff changeset
736 -- directory information is used.
kono
parents:
diff changeset
737
kono
parents:
diff changeset
738 Full_List : Boolean := False;
kono
parents:
diff changeset
739 -- GNAT
kono
parents:
diff changeset
740 -- Set True to generate full source listing with embedded errors
kono
parents:
diff changeset
741
kono
parents:
diff changeset
742 Full_List_File_Name : String_Ptr := null;
kono
parents:
diff changeset
743 -- GNAT
kono
parents:
diff changeset
744 -- Set to file name to generate full source listing to named file (or if
kono
parents:
diff changeset
745 -- the name is of the form .xxx, then to name.xxx where name is the source
kono
parents:
diff changeset
746 -- file name with extension stripped.
kono
parents:
diff changeset
747
kono
parents:
diff changeset
748 Generate_C_Code : Boolean := False;
kono
parents:
diff changeset
749 -- GNAT
kono
parents:
diff changeset
750 -- If True, the Cprint circuitry to generate C code output is activated.
kono
parents:
diff changeset
751 -- Set True by use of -gnateg or -gnatd.V.
kono
parents:
diff changeset
752
kono
parents:
diff changeset
753 Generate_CodePeer_Messages : Boolean := False;
kono
parents:
diff changeset
754 -- GNAT
kono
parents:
diff changeset
755 -- Generate CodePeer messages. Ignored if CodePeer_Mode is false. This is
kono
parents:
diff changeset
756 -- turned on by -gnateC.
kono
parents:
diff changeset
757
kono
parents:
diff changeset
758 Generate_Processed_File : Boolean := False;
kono
parents:
diff changeset
759 -- GNAT
kono
parents:
diff changeset
760 -- True when switch -gnateG is used. When True, create in a file
kono
parents:
diff changeset
761 -- <source>.prep, if the source is preprocessed.
kono
parents:
diff changeset
762
kono
parents:
diff changeset
763 Generate_SCIL : Boolean := False;
kono
parents:
diff changeset
764 -- GNAT
kono
parents:
diff changeset
765 -- Set True to activate SCIL code generation.
kono
parents:
diff changeset
766
kono
parents:
diff changeset
767 Generate_SCO : Boolean := False;
kono
parents:
diff changeset
768 -- GNAT
kono
parents:
diff changeset
769 -- True when switch -fdump-scos (or -gnateS) is used. When True, Source
kono
parents:
diff changeset
770 -- Coverage Obligation (SCO) information is generated and output in the ALI
kono
parents:
diff changeset
771 -- file. See unit Par_SCO for full details.
kono
parents:
diff changeset
772
kono
parents:
diff changeset
773 Generate_SCO_Instance_Table : Boolean := False;
kono
parents:
diff changeset
774 -- GNAT
kono
parents:
diff changeset
775 -- True when switch -fdump-scos is used. When True, a table of instances is
kono
parents:
diff changeset
776 -- included in SCOs.
kono
parents:
diff changeset
777
kono
parents:
diff changeset
778 Generating_Code : Boolean := False;
kono
parents:
diff changeset
779 -- GNAT
kono
parents:
diff changeset
780 -- True if the frontend finished its work and has called the backend to
kono
parents:
diff changeset
781 -- process the tree and generate the object file.
kono
parents:
diff changeset
782
kono
parents:
diff changeset
783 type Ghost_Mode_Type is (None, Check, Ignore);
kono
parents:
diff changeset
784 -- Possible legal modes that can be set by aspect/pragma Ghost as well as
kono
parents:
diff changeset
785 -- value None, which indicates that no such aspect/pragma applies.
kono
parents:
diff changeset
786
kono
parents:
diff changeset
787 Ghost_Mode : Ghost_Mode_Type := None;
kono
parents:
diff changeset
788 -- GNAT
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
789 -- The current Ghost mode in effect
111
kono
parents:
diff changeset
790
kono
parents:
diff changeset
791 Global_Discard_Names : Boolean := False;
kono
parents:
diff changeset
792 -- GNAT, GNATBIND
kono
parents:
diff changeset
793 -- True if a pragma Discard_Names appeared as a configuration pragma for
kono
parents:
diff changeset
794 -- the current compilation unit.
kono
parents:
diff changeset
795
kono
parents:
diff changeset
796 GNAT_Encodings : Int;
kono
parents:
diff changeset
797 pragma Import (C, GNAT_Encodings, "gnat_encodings");
kono
parents:
diff changeset
798 -- Constant controlling the balance between GNAT encodings and standard
kono
parents:
diff changeset
799 -- DWARF to emit in the debug information. It accepts the following values.
kono
parents:
diff changeset
800
kono
parents:
diff changeset
801 DWARF_GNAT_Encodings_All : constant Int := 0;
kono
parents:
diff changeset
802 DWARF_GNAT_Encodings_GDB : constant Int := 1;
kono
parents:
diff changeset
803 DWARF_GNAT_Encodings_Minimal : constant Int := 2;
kono
parents:
diff changeset
804
kono
parents:
diff changeset
805 Identifier_Character_Set : Character;
kono
parents:
diff changeset
806 -- GNAT
kono
parents:
diff changeset
807 -- This variable indicates the character set to be used for identifiers.
kono
parents:
diff changeset
808 -- The possible settings are:
kono
parents:
diff changeset
809 -- '1' Latin-1 (ISO-8859-1)
kono
parents:
diff changeset
810 -- '2' Latin-2 (ISO-8859-2)
kono
parents:
diff changeset
811 -- '3' Latin-3 (ISO-8859-3)
kono
parents:
diff changeset
812 -- '4' Latin-4 (ISO-8859-4)
kono
parents:
diff changeset
813 -- '5' Latin-Cyrillic (ISO-8859-5)
kono
parents:
diff changeset
814 -- '9' Latin-9 (ISO-8859-15)
kono
parents:
diff changeset
815 -- 'p' PC (US, IBM page 437)
kono
parents:
diff changeset
816 -- '8' PC (European, IBM page 850)
kono
parents:
diff changeset
817 -- 'f' Full upper set (all distinct)
kono
parents:
diff changeset
818 -- 'n' No upper characters (Ada 83 rules)
kono
parents:
diff changeset
819 -- 'w' Latin-1 plus wide characters allowed in identifiers
kono
parents:
diff changeset
820 --
kono
parents:
diff changeset
821 -- The setting affects the set of letters allowed in identifiers and the
kono
parents:
diff changeset
822 -- upper/lower case equivalences. It does not affect the interpretation of
kono
parents:
diff changeset
823 -- character and string literals, which are always stored using the actual
kono
parents:
diff changeset
824 -- coding in the source program. This variable is initialized to the
kono
parents:
diff changeset
825 -- default value appropriate to the system (in Osint.Initialize), and then
kono
parents:
diff changeset
826 -- reset if a command line switch is used to change the setting.
kono
parents:
diff changeset
827
kono
parents:
diff changeset
828 Ignore_Rep_Clauses : Boolean := False;
kono
parents:
diff changeset
829 -- GNAT
kono
parents:
diff changeset
830 -- Set True to ignore all representation clauses. Useful when compiling
kono
parents:
diff changeset
831 -- code from foreign compilers for checking or ASIS purposes. Can be
kono
parents:
diff changeset
832 -- set True by use of -gnatI.
kono
parents:
diff changeset
833
kono
parents:
diff changeset
834 Ignore_SPARK_Mode_Pragmas_In_Instance : Boolean := False;
kono
parents:
diff changeset
835 -- GNAT
kono
parents:
diff changeset
836 -- Set True to ignore the semantics and effects of pragma SPARK_Mode when
kono
parents:
diff changeset
837 -- the pragma appears inside an instance whose enclosing context is subject
kono
parents:
diff changeset
838 -- to SPARK_Mode "off". This property applies to nested instances.
kono
parents:
diff changeset
839
kono
parents:
diff changeset
840 Ignore_Style_Checks_Pragmas : Boolean := False;
kono
parents:
diff changeset
841 -- GNAT
kono
parents:
diff changeset
842 -- Set True to ignore all Style_Checks pragmas. Can be set True by use
kono
parents:
diff changeset
843 -- of -gnateY.
kono
parents:
diff changeset
844
kono
parents:
diff changeset
845 Ignore_Unrecognized_VWY_Switches : Boolean := False;
kono
parents:
diff changeset
846 -- GNAT
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
847 -- Set True to ignore unrecognized y, V, w switches. Can be set True by
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
848 -- use of -gnateu, causing subsequent unrecognized switches to result in
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
849 -- a warning rather than an error.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
850
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
851 Ignored_Ghost_Region : Node_Id := Empty;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
852 -- GNAT
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
853 -- The start of the current ignored Ghost region. This value must always
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
854 -- reflect the starting node of the outermost ignored Ghost region. If a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
855 -- nested ignored Ghost region is entered, the value must remain unchanged.
111
kono
parents:
diff changeset
856
kono
parents:
diff changeset
857 Implementation_Unit_Warnings : Boolean := True;
kono
parents:
diff changeset
858 -- GNAT
kono
parents:
diff changeset
859 -- Set True to active warnings for use of implementation internal units.
kono
parents:
diff changeset
860 -- Modified by use of -gnatwi/-gnatwI.
kono
parents:
diff changeset
861
kono
parents:
diff changeset
862 Implicit_Packing : Boolean := False;
kono
parents:
diff changeset
863 -- GNAT
kono
parents:
diff changeset
864 -- If set True, then a Size attribute clause on an array is allowed to
kono
parents:
diff changeset
865 -- cause implicit packing instead of generating an error message. Set by
kono
parents:
diff changeset
866 -- use of pragma Implicit_Packing.
kono
parents:
diff changeset
867
kono
parents:
diff changeset
868 Include_Subprogram_In_Messages : Boolean := False;
kono
parents:
diff changeset
869 -- GNAT
kono
parents:
diff changeset
870 -- Set True to include the enclosing subprogram in compiler messages.
kono
parents:
diff changeset
871
kono
parents:
diff changeset
872 Ineffective_Inline_Warnings : Boolean := False;
kono
parents:
diff changeset
873 -- GNAT
kono
parents:
diff changeset
874 -- Set True to activate warnings if front-end inlining (-gnatN) is not able
kono
parents:
diff changeset
875 -- to actually inline a particular call (or all calls). Can be controlled
kono
parents:
diff changeset
876 -- by use of -gnatwp/-gnatwP. Also set True to activate warnings if
kono
parents:
diff changeset
877 -- frontend inlining is not able to inline a subprogram expected to
kono
parents:
diff changeset
878 -- be inlined in GNATprove mode.
kono
parents:
diff changeset
879
kono
parents:
diff changeset
880 Init_Or_Norm_Scalars : Boolean := False;
kono
parents:
diff changeset
881 -- GNAT, GNATBIND
kono
parents:
diff changeset
882 -- Set True if a pragma Initialize_Scalars applies to the current unit.
kono
parents:
diff changeset
883 -- Also set True if a pragma Restriction (Normalize_Scalars) applies.
kono
parents:
diff changeset
884
kono
parents:
diff changeset
885 Initialize_Scalars : Boolean := False;
kono
parents:
diff changeset
886 -- GNAT
kono
parents:
diff changeset
887 -- Set True if a pragma Initialize_Scalars applies to the current unit.
kono
parents:
diff changeset
888 -- Note that Init_Or_Norm_Scalars is also set to True if this is True.
kono
parents:
diff changeset
889
kono
parents:
diff changeset
890 Initialize_Scalars_Mode1 : Character := 'I';
kono
parents:
diff changeset
891 Initialize_Scalars_Mode2 : Character := 'N';
kono
parents:
diff changeset
892 -- GNATBIND
kono
parents:
diff changeset
893 -- Set to two characters from -S switch (IN/LO/HI/EV/xx). The default
kono
parents:
diff changeset
894 -- is IN (invalid values), used if no -S switch is used.
kono
parents:
diff changeset
895
kono
parents:
diff changeset
896 Inline_Active : Boolean := False;
kono
parents:
diff changeset
897 -- GNAT
kono
parents:
diff changeset
898 -- Set True to activate pragma Inline processing across modules. Default
kono
parents:
diff changeset
899 -- for now is not to inline across module boundaries.
kono
parents:
diff changeset
900
kono
parents:
diff changeset
901 Inline_Level : Nat := 0;
kono
parents:
diff changeset
902 -- GNAT
kono
parents:
diff changeset
903 -- Set to indicate the inlining level: 0 means that an appropriate value is
kono
parents:
diff changeset
904 -- to be computed by the compiler based on the optimization level (-gnatn),
kono
parents:
diff changeset
905 -- 1 is for moderate inlining across modules (-gnatn1) and 2 for full
kono
parents:
diff changeset
906 -- inlining across modules (-gnatn2).
kono
parents:
diff changeset
907
kono
parents:
diff changeset
908 Interface_Library_Unit : Boolean := False;
kono
parents:
diff changeset
909 -- GNATBIND
kono
parents:
diff changeset
910 -- Set to True to indicate that at least one ALI file is an interface ALI:
kono
parents:
diff changeset
911 -- then elaboration flag checks are to be generated in the binder
kono
parents:
diff changeset
912 -- generated file.
kono
parents:
diff changeset
913
kono
parents:
diff changeset
914 Invalid_Value_Used : Boolean := False;
kono
parents:
diff changeset
915 -- GNAT
kono
parents:
diff changeset
916 -- Set True if a valid Invalid_Value attribute is encountered
kono
parents:
diff changeset
917
kono
parents:
diff changeset
918 Inline_Processing_Required : Boolean := False;
kono
parents:
diff changeset
919 -- GNAT
kono
parents:
diff changeset
920 -- Set True if inline processing is required. Inline processing is required
kono
parents:
diff changeset
921 -- if an active Inline pragma is processed. The flag is set for a pragma
kono
parents:
diff changeset
922 -- Inline or Inline_Always that is actually active.
kono
parents:
diff changeset
923
kono
parents:
diff changeset
924 In_Place_Mode : Boolean := False;
kono
parents:
diff changeset
925 -- GNATMAKE
kono
parents:
diff changeset
926 -- Set True to store ALI and object files in place i.e. in the object
kono
parents:
diff changeset
927 -- directory if these files already exist or in the source directory
kono
parents:
diff changeset
928 -- if not.
kono
parents:
diff changeset
929
kono
parents:
diff changeset
930 Keep_Going : Boolean := False;
kono
parents:
diff changeset
931 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
932 -- When True signals to ignore compilation errors and keep processing
kono
parents:
diff changeset
933 -- sources until there is no more work.
kono
parents:
diff changeset
934
kono
parents:
diff changeset
935 Keep_Temporary_Files : Boolean := False;
kono
parents:
diff changeset
936 -- GNATCMD, GNATMAKE, GPRBUILD
kono
parents:
diff changeset
937 -- When True the temporary files are not deleted. Set by switches -dn or
kono
parents:
diff changeset
938 -- --keep-temp-files.
kono
parents:
diff changeset
939
kono
parents:
diff changeset
940 Leap_Seconds_Support : Boolean := False;
kono
parents:
diff changeset
941 -- GNATBIND
kono
parents:
diff changeset
942 -- Set to True to enable leap seconds support in Ada.Calendar and its
kono
parents:
diff changeset
943 -- children.
kono
parents:
diff changeset
944
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
945 Legacy_Elaboration_Checks : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
946 -- GNAT
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
947 -- Set to True when the pre-18.x access-before-elaboration model is to be
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
948 -- used. Modified by use of -gnatH.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
949
111
kono
parents:
diff changeset
950 Link_Only : Boolean := False;
kono
parents:
diff changeset
951 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
952 -- Set to True to skip compile and bind steps (except when Bind_Only is
kono
parents:
diff changeset
953 -- set to True).
kono
parents:
diff changeset
954
kono
parents:
diff changeset
955 List_Body_Required_Info : Boolean := False;
kono
parents:
diff changeset
956 -- GNATMAKE
kono
parents:
diff changeset
957 -- List info messages about why a package requires a body. Modified by use
kono
parents:
diff changeset
958 -- of -gnatw.y/.Y.
kono
parents:
diff changeset
959
kono
parents:
diff changeset
960 List_Inherited_Aspects : Boolean := False;
kono
parents:
diff changeset
961 -- GNAT
kono
parents:
diff changeset
962 -- List inherited invariants, preconditions, and postconditions from
kono
parents:
diff changeset
963 -- Invariant'Class, Pre'Class, and Post'Class aspects. Also list inherited
kono
parents:
diff changeset
964 -- subtype predicates. Modified by use of -gnatw.l/.L.
kono
parents:
diff changeset
965
kono
parents:
diff changeset
966 List_Restrictions : Boolean := False;
kono
parents:
diff changeset
967 -- GNATBIND
kono
parents:
diff changeset
968 -- Set to True to list restrictions pragmas that could apply to partition
kono
parents:
diff changeset
969
kono
parents:
diff changeset
970 List_Units : Boolean := False;
kono
parents:
diff changeset
971 -- GNAT
kono
parents:
diff changeset
972 -- List units in the active library for a compilation (-gnatu switch)
kono
parents:
diff changeset
973
kono
parents:
diff changeset
974 List_Closure : Boolean := False;
kono
parents:
diff changeset
975 -- GNATBIND
kono
parents:
diff changeset
976 -- List all sources in the closure of a main (-R or -Ra gnatbind switch)
kono
parents:
diff changeset
977
kono
parents:
diff changeset
978 List_Closure_All : Boolean := False;
kono
parents:
diff changeset
979 -- GNATBIND
kono
parents:
diff changeset
980 -- List all sources in closure of main including run-time units (-Ra
kono
parents:
diff changeset
981 -- gnatbind switch).
kono
parents:
diff changeset
982
kono
parents:
diff changeset
983 List_Dependencies : Boolean := False;
kono
parents:
diff changeset
984 -- GNATMAKE
kono
parents:
diff changeset
985 -- When True gnatmake verifies that the objects are up to date and outputs
kono
parents:
diff changeset
986 -- the list of object dependencies (-M switch). Output depends if -a switch
kono
parents:
diff changeset
987 -- is used or not. This list can be used directly in a Makefile.
kono
parents:
diff changeset
988
kono
parents:
diff changeset
989 List_Representation_Info : Int range 0 .. 3 := 0;
kono
parents:
diff changeset
990 -- GNAT
kono
parents:
diff changeset
991 -- Set non-zero by -gnatR switch to list representation information.
kono
parents:
diff changeset
992 -- The settings are as follows:
kono
parents:
diff changeset
993 --
kono
parents:
diff changeset
994 -- 0 = no listing of representation information (default as above)
kono
parents:
diff changeset
995 -- 1 = list rep info for user defined record and array types
kono
parents:
diff changeset
996 -- 2 = list rep info for all user defined types and objects
kono
parents:
diff changeset
997 -- 3 = like 2, but variable fields are decoded symbolically
kono
parents:
diff changeset
998
kono
parents:
diff changeset
999 List_Representation_Info_To_File : Boolean := False;
kono
parents:
diff changeset
1000 -- GNAT
kono
parents:
diff changeset
1001 -- Set true by -gnatRs switch. Causes information from -gnatR/1/2/3/m to be
kono
parents:
diff changeset
1002 -- written to file.rep (where file is the name of the source file) instead
kono
parents:
diff changeset
1003 -- of stdout. For example, if file x.adb is compiled using -gnatR2s then
kono
parents:
diff changeset
1004 -- representation info is written to x.adb.ref.
kono
parents:
diff changeset
1005
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1006 List_Representation_Info_To_JSON : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1007 -- GNAT
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1008 -- Set true by -gnatRj switch. Causes information from -gnatR/1/2/3/m to be
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1009 -- output in the JSON data interchange format.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1010
111
kono
parents:
diff changeset
1011 List_Representation_Info_Mechanisms : Boolean := False;
kono
parents:
diff changeset
1012 -- GNAT
kono
parents:
diff changeset
1013 -- Set true by -gnatRm switch. Causes information on mechanisms to be
kono
parents:
diff changeset
1014 -- included in the representation output information.
kono
parents:
diff changeset
1015
kono
parents:
diff changeset
1016 List_Representation_Info_Extended : Boolean := False;
kono
parents:
diff changeset
1017 -- GNAT
kono
parents:
diff changeset
1018 -- Set true by -gnatRe switch. Causes extended information for record types
kono
parents:
diff changeset
1019 -- to be included in the representation output information.
kono
parents:
diff changeset
1020
kono
parents:
diff changeset
1021 List_Preprocessing_Symbols : Boolean := False;
kono
parents:
diff changeset
1022 -- GNAT, GNATPREP
kono
parents:
diff changeset
1023 -- Set to True if symbols for preprocessing a source are to be listed
kono
parents:
diff changeset
1024 -- before preprocessing occurs. Set to True by switch -s of gnatprep or
kono
parents:
diff changeset
1025 -- -s in preprocessing data file for the compiler.
kono
parents:
diff changeset
1026
kono
parents:
diff changeset
1027 type Create_Repinfo_File_Proc is access procedure (Src : String);
kono
parents:
diff changeset
1028 type Write_Repinfo_Line_Proc is access procedure (Info : String);
kono
parents:
diff changeset
1029 type Close_Repinfo_File_Proc is access procedure;
kono
parents:
diff changeset
1030 -- Types used for procedure addresses below
kono
parents:
diff changeset
1031
kono
parents:
diff changeset
1032 Create_Repinfo_File_Access : Create_Repinfo_File_Proc := null;
kono
parents:
diff changeset
1033 Write_Repinfo_Line_Access : Write_Repinfo_Line_Proc := null;
kono
parents:
diff changeset
1034 Close_Repinfo_File_Access : Close_Repinfo_File_Proc := null;
kono
parents:
diff changeset
1035 -- GNAT
kono
parents:
diff changeset
1036 -- These three locations are left null when operating in non-compiler (e.g.
kono
parents:
diff changeset
1037 -- ASIS mode), but when operating in compiler mode, they are set to point
kono
parents:
diff changeset
1038 -- to the three corresponding procedures in Osint-C. The reason for this
kono
parents:
diff changeset
1039 -- slightly strange interface is to stop Repinfo from dragging in Osint in
kono
parents:
diff changeset
1040 -- ASIS mode, which would include lots of unwanted units in the ASIS build.
kono
parents:
diff changeset
1041
kono
parents:
diff changeset
1042 type Create_List_File_Proc is access procedure (S : String);
kono
parents:
diff changeset
1043 type Write_List_Info_Proc is access procedure (S : String);
kono
parents:
diff changeset
1044 type Close_List_File_Proc is access procedure;
kono
parents:
diff changeset
1045 -- Types used for procedure addresses below
kono
parents:
diff changeset
1046
kono
parents:
diff changeset
1047 Create_List_File_Access : Create_List_File_Proc := null;
kono
parents:
diff changeset
1048 Write_List_Info_Access : Write_List_Info_Proc := null;
kono
parents:
diff changeset
1049 Close_List_File_Access : Close_List_File_Proc := null;
kono
parents:
diff changeset
1050 -- GNAT
kono
parents:
diff changeset
1051 -- These three locations are left null when operating in non-compiler
kono
parents:
diff changeset
1052 -- (e.g. from the binder), but when operating in compiler mode, they are
kono
parents:
diff changeset
1053 -- set to point to the three corresponding procedures in Osint-C. The
kono
parents:
diff changeset
1054 -- reason for this slightly strange interface is to prevent Repinfo
kono
parents:
diff changeset
1055 -- from dragging in Osint-C in the binder, which would include unwanted
kono
parents:
diff changeset
1056 -- units in the binder.
kono
parents:
diff changeset
1057
kono
parents:
diff changeset
1058 Locking_Policy : Character := ' ';
kono
parents:
diff changeset
1059 -- GNAT, GNATBIND
kono
parents:
diff changeset
1060
kono
parents:
diff changeset
1061 -- Set to ' ' for the default case (no locking policy specified). Otherwise
kono
parents:
diff changeset
1062 -- set based on the pragma Locking_Policy:
kono
parents:
diff changeset
1063 -- Ceiling_Locking: 'C'
kono
parents:
diff changeset
1064 -- Concurrent_Readers_Locking: 'R'
kono
parents:
diff changeset
1065 -- Inheritance_Locking: 'I'
kono
parents:
diff changeset
1066
kono
parents:
diff changeset
1067 Locking_Policy_Sloc : Source_Ptr := No_Location;
kono
parents:
diff changeset
1068 -- GNAT, GNATBIND
kono
parents:
diff changeset
1069 -- Remember location of previous Locking_Policy pragma. This is used for
kono
parents:
diff changeset
1070 -- inconsistency error messages. A value of System_Location is used if the
kono
parents:
diff changeset
1071 -- policy is set in package System.
kono
parents:
diff changeset
1072
kono
parents:
diff changeset
1073 Look_In_Primary_Dir : Boolean := True;
kono
parents:
diff changeset
1074 -- GNAT, GNATBIND, GNATMAKE, GNATCLEAN
kono
parents:
diff changeset
1075 -- Set to False if a -I- was present on the command line. When True we are
kono
parents:
diff changeset
1076 -- allowed to look in the primary directory to locate other source or
kono
parents:
diff changeset
1077 -- library files.
kono
parents:
diff changeset
1078
kono
parents:
diff changeset
1079 Make_Steps : Boolean := False;
kono
parents:
diff changeset
1080 -- GNATMAKE
kono
parents:
diff changeset
1081 -- Set to True when either Compile_Only, Bind_Only or Link_Only is
kono
parents:
diff changeset
1082 -- set to True.
kono
parents:
diff changeset
1083
kono
parents:
diff changeset
1084 Main_Index : Int := 0;
kono
parents:
diff changeset
1085 -- GNATMAKE
kono
parents:
diff changeset
1086 -- This is set to non-zero by gnatmake switch -eInnn to indicate that
kono
parents:
diff changeset
1087 -- the main program is the nnn unit in a multi-unit source file.
kono
parents:
diff changeset
1088
kono
parents:
diff changeset
1089 Mapping_File_Name : String_Ptr := null;
kono
parents:
diff changeset
1090 -- GNAT
kono
parents:
diff changeset
1091 -- File name of mapping between unit names, file names and path names.
kono
parents:
diff changeset
1092 -- (given by switch -gnatem)
kono
parents:
diff changeset
1093
kono
parents:
diff changeset
1094 Maximum_Messages : Int := 9999;
kono
parents:
diff changeset
1095 -- GNAT, GNATBIND
kono
parents:
diff changeset
1096 -- Maximum default number of errors before compilation is terminated, or in
kono
parents:
diff changeset
1097 -- the case of GNAT, maximum number of warnings before further warnings are
kono
parents:
diff changeset
1098 -- suppressed. Can be overridden by -gnatm (GNAT) or -m (GNATBIND) switch.
kono
parents:
diff changeset
1099
kono
parents:
diff changeset
1100 Maximum_File_Name_Length : Int;
kono
parents:
diff changeset
1101 -- GNAT, GNATBIND
kono
parents:
diff changeset
1102 -- Maximum number of characters allowed in a file name, not counting the
kono
parents:
diff changeset
1103 -- extension, as set by the appropriate switch. If no switch is given,
kono
parents:
diff changeset
1104 -- then this value is initialized by Osint to the appropriate value.
kono
parents:
diff changeset
1105
kono
parents:
diff changeset
1106 Maximum_Instantiations : Int := 8000;
kono
parents:
diff changeset
1107 -- GNAT
kono
parents:
diff changeset
1108 -- Maximum number of instantiations permitted (to stop runaway cases
kono
parents:
diff changeset
1109 -- of nested instantiations). These situations probably only occur in
kono
parents:
diff changeset
1110 -- specially concocted test cases. Can be modified by -gnateinn switch.
kono
parents:
diff changeset
1111
kono
parents:
diff changeset
1112 Maximum_Processes : Positive := 1;
kono
parents:
diff changeset
1113 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
1114 -- Maximum number of processes that should be spawned to carry out
kono
parents:
diff changeset
1115 -- compilations.
kono
parents:
diff changeset
1116
kono
parents:
diff changeset
1117 Minimal_Recompilation : Boolean := False;
kono
parents:
diff changeset
1118 -- GNATMAKE
kono
parents:
diff changeset
1119 -- Set to True if minimal recompilation mode requested
kono
parents:
diff changeset
1120
kono
parents:
diff changeset
1121 Minimize_Expression_With_Actions : Boolean := False;
kono
parents:
diff changeset
1122 -- GNAT
kono
parents:
diff changeset
1123 -- If True, minimize the use of N_Expression_With_Actions node.
kono
parents:
diff changeset
1124 -- This can be used in particular on some back-ends where this node is
kono
parents:
diff changeset
1125 -- difficult to support.
kono
parents:
diff changeset
1126
kono
parents:
diff changeset
1127 Modify_Tree_For_C : Boolean := False;
kono
parents:
diff changeset
1128 -- GNAT
kono
parents:
diff changeset
1129 -- If this switch is set True (currently it is set only by -gnatd.V), then
kono
parents:
diff changeset
1130 -- certain meaning-preserving transformations are applied to the tree to
kono
parents:
diff changeset
1131 -- make it easier to interface with back ends that implement C semantics.
kono
parents:
diff changeset
1132 -- There is a section in Sinfo which describes the transformations made.
kono
parents:
diff changeset
1133
kono
parents:
diff changeset
1134 Multiple_Unit_Index : Int := 0;
kono
parents:
diff changeset
1135 -- GNAT
kono
parents:
diff changeset
1136 -- This is set non-zero if the current unit is being compiled in multiple
kono
parents:
diff changeset
1137 -- unit per file mode, meaning that the current unit is selected from the
kono
parents:
diff changeset
1138 -- sequence of units in the current source file, using the value stored
kono
parents:
diff changeset
1139 -- in this variable (e.g. 2 = select second unit in file). A value of
kono
parents:
diff changeset
1140 -- zero indicates that we are in normal (one unit per file) mode.
kono
parents:
diff changeset
1141
kono
parents:
diff changeset
1142 No_Backup : Boolean := False;
kono
parents:
diff changeset
1143 -- GNATNAME
kono
parents:
diff changeset
1144 -- Do not create backup copies of project files. Set by switch --no-backup.
kono
parents:
diff changeset
1145
kono
parents:
diff changeset
1146 No_Component_Reordering : Boolean := False;
kono
parents:
diff changeset
1147 -- GNAT
kono
parents:
diff changeset
1148 -- Set True if pragma No_Component_Reordering with no parameter encountered
kono
parents:
diff changeset
1149
kono
parents:
diff changeset
1150 No_Deletion : Boolean := False;
kono
parents:
diff changeset
1151 -- GNATPREP
kono
parents:
diff changeset
1152 -- Set by preprocessor switch -a. Do not eliminate any source text. Implies
kono
parents:
diff changeset
1153 -- Undefined_Symbols_Are_False. Useful to perform a syntax check on all
kono
parents:
diff changeset
1154 -- branches of #if constructs.
kono
parents:
diff changeset
1155
kono
parents:
diff changeset
1156 No_Elab_Code_All_Pragma : Node_Id := Empty;
kono
parents:
diff changeset
1157 -- Set to point to a No_Elaboration_Code_All pragma or aspect encountered
kono
parents:
diff changeset
1158 -- in the spec of the extended main unit. Used to determine if we need to
kono
parents:
diff changeset
1159 -- do special tests for violation of this aspect.
kono
parents:
diff changeset
1160
kono
parents:
diff changeset
1161 No_Heap_Finalization_Pragma : Node_Id := Empty;
kono
parents:
diff changeset
1162 -- GNAT
kono
parents:
diff changeset
1163 -- Set to point to a No_Heap_Finalization pragma defined in a configuration
kono
parents:
diff changeset
1164 -- file.
kono
parents:
diff changeset
1165
kono
parents:
diff changeset
1166 No_Main_Subprogram : Boolean := False;
kono
parents:
diff changeset
1167 -- GNATMAKE, GNATBIND
kono
parents:
diff changeset
1168 -- Set to True if compilation/binding of a program without main
kono
parents:
diff changeset
1169 -- subprogram requested.
kono
parents:
diff changeset
1170
kono
parents:
diff changeset
1171 No_Run_Time_Mode : Boolean := False;
kono
parents:
diff changeset
1172 -- GNAT, GNATBIND
kono
parents:
diff changeset
1173 -- This flag is set True if a No_Run_Time pragma is encountered. See spec
kono
parents:
diff changeset
1174 -- of Rtsfind for a full description of handling of this pragma.
kono
parents:
diff changeset
1175
kono
parents:
diff changeset
1176 No_Split_Units : Boolean := False;
kono
parents:
diff changeset
1177 -- GPRBUILD
kono
parents:
diff changeset
1178 -- Set to True with switch --no-split-units. When True, unit sources, spec,
kono
parents:
diff changeset
1179 -- body and subunits, must all be in the same project. This is checked
kono
parents:
diff changeset
1180 -- after each compilation.
kono
parents:
diff changeset
1181
kono
parents:
diff changeset
1182 No_Stdinc : Boolean := False;
kono
parents:
diff changeset
1183 -- GNAT, GNATBIND, GNATMAKE, GNATFIND, GNATXREF
kono
parents:
diff changeset
1184 -- Set to True if no default source search dirs added to search list.
kono
parents:
diff changeset
1185
kono
parents:
diff changeset
1186 No_Stdlib : Boolean := False;
kono
parents:
diff changeset
1187 -- GNATMAKE, GNATBIND, GNATFIND, GNATXREF
kono
parents:
diff changeset
1188 -- Set to True if no default library search dirs added to search list.
kono
parents:
diff changeset
1189
kono
parents:
diff changeset
1190 No_Strict_Aliasing : Boolean := False;
kono
parents:
diff changeset
1191 -- GNAT
kono
parents:
diff changeset
1192 -- Set True if pragma No_Strict_Aliasing with no parameters encountered.
kono
parents:
diff changeset
1193
kono
parents:
diff changeset
1194 No_Tagged_Streams : Node_Id := Empty;
kono
parents:
diff changeset
1195 -- GNAT
kono
parents:
diff changeset
1196 -- If a pragma No_Tagged_Streams is active for the current scope, this
kono
parents:
diff changeset
1197 -- points to the corresponding pragma.
kono
parents:
diff changeset
1198
kono
parents:
diff changeset
1199 Normalize_Scalars : Boolean := False;
kono
parents:
diff changeset
1200 -- GNAT, GNATBIND
kono
parents:
diff changeset
1201 -- Set True if a pragma Normalize_Scalars applies to the current unit.
kono
parents:
diff changeset
1202 -- Note that Init_Or_Norm_Scalars is also set to True if this is True.
kono
parents:
diff changeset
1203
kono
parents:
diff changeset
1204 Object_Directory_Present : Boolean := False;
kono
parents:
diff changeset
1205 -- GNATMAKE
kono
parents:
diff changeset
1206 -- Set to True when an object directory is specified with option -D
kono
parents:
diff changeset
1207
kono
parents:
diff changeset
1208 Object_Path_File_Name : String_Ptr := null;
kono
parents:
diff changeset
1209 -- GNAT2WHY
kono
parents:
diff changeset
1210 -- Path of the temporary file that contains a list of object directories
kono
parents:
diff changeset
1211 -- passed by -gnateO=<obj_path_file>.
kono
parents:
diff changeset
1212
kono
parents:
diff changeset
1213 One_Compilation_Per_Obj_Dir : Boolean := False;
kono
parents:
diff changeset
1214 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
1215 -- Set to True with switch --single-compile-per-obj-dir. When True, there
kono
parents:
diff changeset
1216 -- cannot be simultaneous compilations with the object files in the same
kono
parents:
diff changeset
1217 -- object directory, if project files are used.
kono
parents:
diff changeset
1218
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1219 OpenAcc_Enabled : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1220 -- GNAT
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1221 -- Indicates whether OpenAcc pragmas should be taken into account. Set to
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1222 -- True by the use of -fopenacc.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1223
111
kono
parents:
diff changeset
1224 type Operating_Mode_Type is (Check_Syntax, Check_Semantics, Generate_Code);
kono
parents:
diff changeset
1225 pragma Ordered (Operating_Mode_Type);
kono
parents:
diff changeset
1226 Operating_Mode : Operating_Mode_Type := Generate_Code;
kono
parents:
diff changeset
1227 -- GNAT
kono
parents:
diff changeset
1228 -- Indicates the operating mode of the compiler. The default is generate
kono
parents:
diff changeset
1229 -- code, which runs the parser, semantics and backend. Switches can be
kono
parents:
diff changeset
1230 -- used to set syntax checking only mode, or syntax and semantics checking
kono
parents:
diff changeset
1231 -- only mode. Operating_Mode can also be modified as a result of detecting
kono
parents:
diff changeset
1232 -- errors during the compilation process. In particular if any serious
kono
parents:
diff changeset
1233 -- error is detected then this flag is reset from Generate_Code to
kono
parents:
diff changeset
1234 -- Check_Semantics after generating an error message. This is an ordered
kono
parents:
diff changeset
1235 -- type with the semantics that each value does more than the previous one.
kono
parents:
diff changeset
1236
kono
parents:
diff changeset
1237 Optimize_Alignment : Character := 'O';
kono
parents:
diff changeset
1238 -- GNAT
kono
parents:
diff changeset
1239 -- Setting of Optimize_Alignment, set to T/S/O for time/space/off. Can
kono
parents:
diff changeset
1240 -- be modified by use of pragma Optimize_Alignment.
kono
parents:
diff changeset
1241
kono
parents:
diff changeset
1242 Optimize_Alignment_Local : Boolean := False;
kono
parents:
diff changeset
1243 -- GNAT
kono
parents:
diff changeset
1244 -- Set True if Optimize_Alignment mode is set by a local configuration
kono
parents:
diff changeset
1245 -- pragma that overrides the gnat.adc (or other configuration file) default
kono
parents:
diff changeset
1246 -- so that the unit is not dependent on the default setting. Also always
kono
parents:
diff changeset
1247 -- set True for internal units, since these always have a default setting
kono
parents:
diff changeset
1248 -- of Optimize_Alignment (Off) that is enforced (essentially equivalent to
kono
parents:
diff changeset
1249 -- them all having such an explicit pragma in each unit).
kono
parents:
diff changeset
1250
kono
parents:
diff changeset
1251 Original_Operating_Mode : Operating_Mode_Type := Generate_Code;
kono
parents:
diff changeset
1252 -- GNAT
kono
parents:
diff changeset
1253 -- Indicates the original operating mode of the compiler as set by compiler
kono
parents:
diff changeset
1254 -- options. This is identical to Operating_Mode except that this is not
kono
parents:
diff changeset
1255 -- affected by errors.
kono
parents:
diff changeset
1256
kono
parents:
diff changeset
1257 Optimization_Level : Int;
kono
parents:
diff changeset
1258 pragma Import (C, Optimization_Level, "optimize");
kono
parents:
diff changeset
1259 -- GNAT
kono
parents:
diff changeset
1260 -- Constant reflecting the optimization level (0,1,2,3 for -O0,-O1,-O2,-O3)
kono
parents:
diff changeset
1261
kono
parents:
diff changeset
1262 Optimize_Size : Int;
kono
parents:
diff changeset
1263 pragma Import (C, Optimize_Size, "optimize_size");
kono
parents:
diff changeset
1264 -- GNAT
kono
parents:
diff changeset
1265 -- Constant reflecting setting of -Os (optimize for size). Set to nonzero
kono
parents:
diff changeset
1266 -- in -Os mode and set to zero otherwise.
kono
parents:
diff changeset
1267
kono
parents:
diff changeset
1268 Output_File_Name_Present : Boolean := False;
kono
parents:
diff changeset
1269 -- GNATBIND, GNAT, GNATMAKE
kono
parents:
diff changeset
1270 -- Set to True when the output C file name is given with option -o for
kono
parents:
diff changeset
1271 -- GNATBIND, when the object file name is given with option -gnatO for GNAT
kono
parents:
diff changeset
1272 -- or when the executable is given with option -o for GNATMAKE.
kono
parents:
diff changeset
1273
kono
parents:
diff changeset
1274 Output_Linker_Option_List : Boolean := False;
kono
parents:
diff changeset
1275 -- GNATBIND
kono
parents:
diff changeset
1276 -- True if output of list of linker options is requested (-K switch set)
kono
parents:
diff changeset
1277
kono
parents:
diff changeset
1278 Output_ALI_List : Boolean := False;
kono
parents:
diff changeset
1279 ALI_List_Filename : String_Ptr;
kono
parents:
diff changeset
1280 -- GNATBIND
kono
parents:
diff changeset
1281 -- True if output of list of ALIs is requested (-A switch set). List is
kono
parents:
diff changeset
1282 -- output under the given filename, or standard output if not specified.
kono
parents:
diff changeset
1283
kono
parents:
diff changeset
1284 Output_Object_List : Boolean := False;
kono
parents:
diff changeset
1285 Object_List_Filename : String_Ptr;
kono
parents:
diff changeset
1286 -- GNATBIND
kono
parents:
diff changeset
1287 -- True if output of list of objects is requested (-O switch set). List is
kono
parents:
diff changeset
1288 -- output under the given filename, or standard output if not specified.
kono
parents:
diff changeset
1289
kono
parents:
diff changeset
1290 Partition_Elaboration_Policy : Character := ' ';
kono
parents:
diff changeset
1291 -- GNAT, GNATBIND
kono
parents:
diff changeset
1292 -- Set to ' ' for the default case (no elaboration policy specified). Reset
kono
parents:
diff changeset
1293 -- to first character (uppercase) of locking policy name if a valid pragma
kono
parents:
diff changeset
1294 -- Partition_Elaboration_Policy is encountered.
kono
parents:
diff changeset
1295
kono
parents:
diff changeset
1296 Partition_Elaboration_Policy_Sloc : Source_Ptr := No_Location;
kono
parents:
diff changeset
1297 -- GNAT, GNATBIND
kono
parents:
diff changeset
1298 -- Remember location of previous Partition_Elaboration_Policy pragma. This
kono
parents:
diff changeset
1299 -- is used for inconsistency error messages. A value of System_Location is
kono
parents:
diff changeset
1300 -- used if the policy is set in package System.
kono
parents:
diff changeset
1301
kono
parents:
diff changeset
1302 Persistent_BSS_Mode : Boolean := False;
kono
parents:
diff changeset
1303 -- GNAT
kono
parents:
diff changeset
1304 -- True if a Persistent_BSS configuration pragma is in effect, causing
kono
parents:
diff changeset
1305 -- potentially persistent data to be placed in the persistent_bss section.
kono
parents:
diff changeset
1306
kono
parents:
diff changeset
1307 Pessimistic_Elab_Order : Boolean := False;
kono
parents:
diff changeset
1308 -- GNATBIND
kono
parents:
diff changeset
1309 -- True if pessimistic elaboration order is to be chosen (-p switch set)
kono
parents:
diff changeset
1310
kono
parents:
diff changeset
1311 Polling_Required : Boolean := False;
kono
parents:
diff changeset
1312 -- GNAT
kono
parents:
diff changeset
1313 -- Set to True if polling for asynchronous abort is enabled by using
kono
parents:
diff changeset
1314 -- the -gnatP option for GNAT.
kono
parents:
diff changeset
1315
kono
parents:
diff changeset
1316 Prefix_Exception_Messages : Boolean := False;
kono
parents:
diff changeset
1317 -- GNAT
kono
parents:
diff changeset
1318 -- Set True to prefix exception messages with entity-name:
kono
parents:
diff changeset
1319
kono
parents:
diff changeset
1320 Preprocessing_Data_File : String_Ptr := null;
kono
parents:
diff changeset
1321 -- GNAT
kono
parents:
diff changeset
1322 -- Set by switch -gnatep=. The file name of the preprocessing data file.
kono
parents:
diff changeset
1323
kono
parents:
diff changeset
1324 Preprocessing_Symbol_Defs : String_List_Access := new String_List (1 .. 4);
kono
parents:
diff changeset
1325 -- An extensible array to temporarily stores symbol definitions specified
kono
parents:
diff changeset
1326 -- on the command line with -gnateD switches. The value 4 is an arbitrary
kono
parents:
diff changeset
1327 -- starting point, if more space is needed it is allocated as required.
kono
parents:
diff changeset
1328
kono
parents:
diff changeset
1329 Preprocessing_Symbol_Last : Natural := 0;
kono
parents:
diff changeset
1330 -- Index of last symbol definition in array Symbol_Definitions
kono
parents:
diff changeset
1331
kono
parents:
diff changeset
1332 Print_Generated_Code : Boolean := False;
kono
parents:
diff changeset
1333 -- GNAT
kono
parents:
diff changeset
1334 -- Set to True to enable output of generated code in source form. This
kono
parents:
diff changeset
1335 -- flag is set by the -gnatG switch.
kono
parents:
diff changeset
1336
kono
parents:
diff changeset
1337 Print_Standard : Boolean := False;
kono
parents:
diff changeset
1338 -- GNAT
kono
parents:
diff changeset
1339 -- Set to true to enable printing of package standard in source form.
kono
parents:
diff changeset
1340 -- This flag is set by the -gnatS switch
kono
parents:
diff changeset
1341
kono
parents:
diff changeset
1342 type Usage is (Unknown, Not_In_Use, In_Use);
kono
parents:
diff changeset
1343 Project_File_In_Use : Usage := Unknown;
kono
parents:
diff changeset
1344 -- GNAT
kono
parents:
diff changeset
1345 -- Indicates if a project file is used or not. Set to In_Use by the first
kono
parents:
diff changeset
1346 -- SFNP pragma.
kono
parents:
diff changeset
1347
kono
parents:
diff changeset
1348 Quantity_Of_Default_Size_Sec_Stacks : Int := -1;
kono
parents:
diff changeset
1349 -- GNATBIND
kono
parents:
diff changeset
1350 -- The number of default sized secondary stacks that the binder should
kono
parents:
diff changeset
1351 -- generate. Allows ZFP users to have the binder generate extra stacks if
kono
parents:
diff changeset
1352 -- needed to support multithreaded applications. A value of -1 indicates
kono
parents:
diff changeset
1353 -- that no size was set by the binder.
kono
parents:
diff changeset
1354
kono
parents:
diff changeset
1355 Queuing_Policy : Character := ' ';
kono
parents:
diff changeset
1356 -- GNAT, GNATBIND
kono
parents:
diff changeset
1357 -- Set to ' ' for the default case (no queuing policy specified). Reset to
kono
parents:
diff changeset
1358 -- first character (uppercase) of locking policy name if a valid
kono
parents:
diff changeset
1359 -- Queuing_Policy pragma is encountered.
kono
parents:
diff changeset
1360
kono
parents:
diff changeset
1361 Queuing_Policy_Sloc : Source_Ptr := No_Location;
kono
parents:
diff changeset
1362 -- GNAT, GNATBIND
kono
parents:
diff changeset
1363 -- Remember location of previous Queuing_Policy pragma. This is used for
kono
parents:
diff changeset
1364 -- inconsistency error messages. A value of System_Location is used if the
kono
parents:
diff changeset
1365 -- policy is set in package System.
kono
parents:
diff changeset
1366
kono
parents:
diff changeset
1367 Quiet_Output : Boolean := False;
kono
parents:
diff changeset
1368 -- GNATMAKE, GNATCLEAN, GPRBUILD, GPRCLEAN
kono
parents:
diff changeset
1369 -- Set to True if the tool should not have any output if there are no
kono
parents:
diff changeset
1370 -- errors or warnings.
kono
parents:
diff changeset
1371
kono
parents:
diff changeset
1372 Overriding_Renamings : Boolean := False;
kono
parents:
diff changeset
1373 -- GNAT
kono
parents:
diff changeset
1374 -- Set to True to enable compatibility mode with Rational compiler, and
kono
parents:
diff changeset
1375 -- to accept renamings of implicit operations in their own scope.
kono
parents:
diff changeset
1376
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1377 Relaxed_Elaboration_Checks : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1378 -- GNAT
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1379 -- Set to True to ignore certain elaboration scenarios, thus making the
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1380 -- current ABE mechanism more permissive. This behavior is applicable to
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1381 -- both the default and the legacy ABE models. Modified by use of -gnatJ.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1382
111
kono
parents:
diff changeset
1383 Relaxed_RM_Semantics : Boolean := False;
kono
parents:
diff changeset
1384 -- GNAT
kono
parents:
diff changeset
1385 -- Set to True to ignore some Ada semantic error to help parse legacy Ada
kono
parents:
diff changeset
1386 -- code for use in e.g. static analysis (such as CodePeer). This deals
kono
parents:
diff changeset
1387 -- with cases where other compilers allow illegal constructs. Tools such as
kono
parents:
diff changeset
1388 -- CodePeer are interested in analyzing code rather than enforcing legality
kono
parents:
diff changeset
1389 -- rules, so as long as these illegal constructs end up with code that can
kono
parents:
diff changeset
1390 -- be handled by the tool in question, there is no reason to reject the
kono
parents:
diff changeset
1391 -- code that is considered correct by the other compiler.
kono
parents:
diff changeset
1392
kono
parents:
diff changeset
1393 Replace_In_Comments : Boolean := False;
kono
parents:
diff changeset
1394 -- GNATPREP
kono
parents:
diff changeset
1395 -- Set to True if -C switch used.
kono
parents:
diff changeset
1396
kono
parents:
diff changeset
1397 RTS_Lib_Path_Name : String_Ptr := null;
kono
parents:
diff changeset
1398 RTS_Src_Path_Name : String_Ptr := null;
kono
parents:
diff changeset
1399 -- GNAT
kono
parents:
diff changeset
1400 -- Set to the "adalib" and "adainclude" directories of the run time
kono
parents:
diff changeset
1401 -- specified by --RTS=.
kono
parents:
diff changeset
1402
kono
parents:
diff changeset
1403 RTS_Switch : Boolean := False;
kono
parents:
diff changeset
1404 -- GNAT, GNATMAKE, GNATBIND, GNATLS, GNATFIND, GNATXREF
kono
parents:
diff changeset
1405 -- Set to True when the --RTS switch is set
kono
parents:
diff changeset
1406
kono
parents:
diff changeset
1407 Run_Path_Option : Boolean := True;
kono
parents:
diff changeset
1408 -- GNATMAKE, GNATLINK
kono
parents:
diff changeset
1409 -- Set to False when no run_path_option should be issued to the linker
kono
parents:
diff changeset
1410
kono
parents:
diff changeset
1411 Search_Directory_Present : Boolean := False;
kono
parents:
diff changeset
1412 -- GNAT
kono
parents:
diff changeset
1413 -- Set to True when argument is -I. Reset to False when next argument, a
kono
parents:
diff changeset
1414 -- search directory path is taken into account. Note that this is quite
kono
parents:
diff changeset
1415 -- different from other switches in this section in that it is only set in
kono
parents:
diff changeset
1416 -- a transitory manner as a result of scanning a -I switch with no file
kono
parents:
diff changeset
1417 -- name, and if set, is an indication that the next argument is to be
kono
parents:
diff changeset
1418 -- treated as a file name.
kono
parents:
diff changeset
1419
kono
parents:
diff changeset
1420 Sec_Stack_Used : Boolean := False;
kono
parents:
diff changeset
1421 -- GNAT, GBATBIND
kono
parents:
diff changeset
1422 -- Set True if generated code uses the System.Secondary_Stack package. For
kono
parents:
diff changeset
1423 -- the binder, set if any unit uses the secondary stack package.
kono
parents:
diff changeset
1424
kono
parents:
diff changeset
1425 Setup_Projects : Boolean := False;
kono
parents:
diff changeset
1426 -- GNAT DRIVER
kono
parents:
diff changeset
1427 -- Set to True for GNAT SETUP: the Project Manager creates nonexistent
kono
parents:
diff changeset
1428 -- object, library, and exec directories.
kono
parents:
diff changeset
1429
kono
parents:
diff changeset
1430 Shared_Libgnat : Boolean;
kono
parents:
diff changeset
1431 -- GNATBIND
kono
parents:
diff changeset
1432 -- Set to True if a shared libgnat is requested by using the -shared option
kono
parents:
diff changeset
1433 -- for GNATBIND and to False when using the -static option. The value of
kono
parents:
diff changeset
1434 -- this flag is set by Gnatbind.Scan_Bind_Arg.
kono
parents:
diff changeset
1435
kono
parents:
diff changeset
1436 Short_Circuit_And_Or : Boolean := False;
kono
parents:
diff changeset
1437 -- GNAT
kono
parents:
diff changeset
1438 -- Set True if a pragma Short_Circuit_And_Or applies to the current unit.
kono
parents:
diff changeset
1439
kono
parents:
diff changeset
1440 type SPARK_Mode_Type is (None, Off, On);
kono
parents:
diff changeset
1441 -- Possible legal modes that can be set by aspect/pragma SPARK_Mode, as
kono
parents:
diff changeset
1442 -- well as the value None, which indicates no such pragma/aspect applies.
kono
parents:
diff changeset
1443
kono
parents:
diff changeset
1444 SPARK_Mode : SPARK_Mode_Type := None;
kono
parents:
diff changeset
1445 -- GNAT
kono
parents:
diff changeset
1446 -- Current SPARK mode setting.
kono
parents:
diff changeset
1447
kono
parents:
diff changeset
1448 SPARK_Mode_Pragma : Node_Id := Empty;
kono
parents:
diff changeset
1449 -- GNAT
kono
parents:
diff changeset
1450 -- If the current SPARK_Mode (above) was set by a pragma, this records
kono
parents:
diff changeset
1451 -- the pragma that set this mode.
kono
parents:
diff changeset
1452
kono
parents:
diff changeset
1453 SPARK_Switches_File_Name : String_Ptr := null;
kono
parents:
diff changeset
1454 -- GNAT
kono
parents:
diff changeset
1455 -- Set to non-null file name by use of the -gnates switch to specify
kono
parents:
diff changeset
1456 -- SPARK (gnat2why) specific switches in the given file name.
kono
parents:
diff changeset
1457
kono
parents:
diff changeset
1458 Special_Exception_Package_Used : Boolean := False;
kono
parents:
diff changeset
1459 -- GNAT
kono
parents:
diff changeset
1460 -- Set to True if either of the unit GNAT.Most_Recent_Exception or
kono
parents:
diff changeset
1461 -- GNAT.Exception_Traces is with'ed. Used to inhibit transformation of
kono
parents:
diff changeset
1462 -- local raise statements into gotos in the presence of either package.
kono
parents:
diff changeset
1463
kono
parents:
diff changeset
1464 Sprint_Line_Limit : Nat := 72;
kono
parents:
diff changeset
1465 -- GNAT
kono
parents:
diff changeset
1466 -- Limit values for chopping long lines in Cprint/Sprint output, can be
kono
parents:
diff changeset
1467 -- reset by use of NNN parameter with -gnatG or -gnatD switches.
kono
parents:
diff changeset
1468
kono
parents:
diff changeset
1469 Stack_Checking_Enabled : Boolean := False;
kono
parents:
diff changeset
1470 -- GNAT
kono
parents:
diff changeset
1471 -- Set to indicate if stack checking is enabled for the compilation. This
kono
parents:
diff changeset
1472 -- is set directly from the value in the gcc back end in the body of the
kono
parents:
diff changeset
1473 -- gcc version of back_end.adb.
kono
parents:
diff changeset
1474
kono
parents:
diff changeset
1475 Style_Check : Boolean := False;
kono
parents:
diff changeset
1476 -- GNAT
kono
parents:
diff changeset
1477 -- Set True to perform style checks. Activates checks carried out in
kono
parents:
diff changeset
1478 -- package Style (see body of this package for details of checks). This
kono
parents:
diff changeset
1479 -- flag is set True by use of either the -gnatg or -gnaty switches, or
kono
parents:
diff changeset
1480 -- by the Style_Check pragma.
kono
parents:
diff changeset
1481
kono
parents:
diff changeset
1482 Style_Check_Main : Boolean := False;
kono
parents:
diff changeset
1483 -- GNAT
kono
parents:
diff changeset
1484 -- Set True if Style_Check was set for the main unit. This is used to
kono
parents:
diff changeset
1485 -- enable style checks for units in the main extended source that get
kono
parents:
diff changeset
1486 -- with'ed indirectly. It is set True by use of either the -gnatg or
kono
parents:
diff changeset
1487 -- -gnaty switches, but not by use of the Style_Checks pragma.
kono
parents:
diff changeset
1488
kono
parents:
diff changeset
1489 Disable_FE_Inline : Boolean := False;
kono
parents:
diff changeset
1490 Disable_FE_Inline_Always : Boolean := False;
kono
parents:
diff changeset
1491 -- GNAT
kono
parents:
diff changeset
1492 -- Request to disable front end inlining from pragma Inline or pragma
kono
parents:
diff changeset
1493 -- Inline_Always out of the presence of the -fno-inline back end flag
kono
parents:
diff changeset
1494 -- on the command line, regardless of any other switches that are set.
kono
parents:
diff changeset
1495 -- It remains the back end's reponsibility to honor -fno-inline at the
kono
parents:
diff changeset
1496 -- back end level.
kono
parents:
diff changeset
1497
kono
parents:
diff changeset
1498 Suppress_Control_Flow_Optimizations : Boolean := False;
kono
parents:
diff changeset
1499 -- GNAT
kono
parents:
diff changeset
1500 -- Set by -fpreserve-control-flow. Suppresses control flow optimizations
kono
parents:
diff changeset
1501 -- that interfere with coverage analysis based on the object code.
kono
parents:
diff changeset
1502
kono
parents:
diff changeset
1503 System_Extend_Pragma_Arg : Node_Id := Empty;
kono
parents:
diff changeset
1504 -- GNAT
kono
parents:
diff changeset
1505 -- Set non-empty if and only if a correct Extend_System pragma was present
kono
parents:
diff changeset
1506 -- in which case it points to the argument of the pragma, and the name can
kono
parents:
diff changeset
1507 -- be located as Chars (Expression (System_Extend_Pragma_Arg)).
kono
parents:
diff changeset
1508
kono
parents:
diff changeset
1509 System_Extend_Unit : Node_Id := Empty;
kono
parents:
diff changeset
1510 -- GNAT
kono
parents:
diff changeset
1511 -- This is set to Empty if GNAT_Mode is set, since pragma Extend_System
kono
parents:
diff changeset
1512 -- is never appropriate in GNAT_Mode (and causes troubles, including
kono
parents:
diff changeset
1513 -- bogus circularities, if we try to compile the run-time library with
kono
parents:
diff changeset
1514 -- a System extension). If GNAT_Mode is not set, then System_Extend_Unit
kono
parents:
diff changeset
1515 -- is a copy of the value set in System_Extend_Pragma_Arg.
kono
parents:
diff changeset
1516
kono
parents:
diff changeset
1517 Subunits_Missing : Boolean := False;
kono
parents:
diff changeset
1518 -- GNAT
kono
parents:
diff changeset
1519 -- This flag is set true if missing subunits are detected with code
kono
parents:
diff changeset
1520 -- generation active. This causes code generation to be skipped.
kono
parents:
diff changeset
1521
kono
parents:
diff changeset
1522 Suppress_Checks : Boolean := False;
kono
parents:
diff changeset
1523 -- GNAT
kono
parents:
diff changeset
1524 -- Set to True if -gnatp (suppress all checks) switch present.
kono
parents:
diff changeset
1525
kono
parents:
diff changeset
1526 Suppress_Options : Suppress_Record;
kono
parents:
diff changeset
1527 -- GNAT
kono
parents:
diff changeset
1528 -- Indicates outer level setting of check suppression. This initializes
kono
parents:
diff changeset
1529 -- the settings of the outer scope level in any unit compiled. This is
kono
parents:
diff changeset
1530 -- initialized by Osint.Initialize, and further initialized by the
kono
parents:
diff changeset
1531 -- Adjust_Global_Switches flag in Gnat1drv.
kono
parents:
diff changeset
1532
kono
parents:
diff changeset
1533 Table_Factor : Int := 1;
kono
parents:
diff changeset
1534 -- GNAT
kono
parents:
diff changeset
1535 -- Factor by which all initial table sizes set in Alloc are multiplied.
kono
parents:
diff changeset
1536 -- Used in Table to calculate initial table sizes (the initial table size
kono
parents:
diff changeset
1537 -- is the value in Alloc, used as the Table_Initial parameter value,
kono
parents:
diff changeset
1538 -- multiplied by the factor given here. The default value is used if no
kono
parents:
diff changeset
1539 -- -gnatT switch appears.
kono
parents:
diff changeset
1540
kono
parents:
diff changeset
1541 Tagged_Type_Expansion : Boolean := True;
kono
parents:
diff changeset
1542 -- GNAT
kono
parents:
diff changeset
1543 -- Set True if tagged types and interfaces should be expanded by the
kono
parents:
diff changeset
1544 -- front-end. If False, the original tree is left unexpanded for tagged
kono
parents:
diff changeset
1545 -- types and dispatching calls, assuming the underlying target supports it.
kono
parents:
diff changeset
1546
kono
parents:
diff changeset
1547 Target_Dependent_Info_Read_Name : String_Ptr := null;
kono
parents:
diff changeset
1548 -- GNAT
kono
parents:
diff changeset
1549 -- Set non-null to override the normal processing in Get_Targ and set the
kono
parents:
diff changeset
1550 -- necessary information by reading the target dependent information file
kono
parents:
diff changeset
1551 -- whose name is given here (see packages Get_Targ and Set_Targ for full
kono
parents:
diff changeset
1552 -- details). Set to non-null file name by use of the -gnateT switch.
kono
parents:
diff changeset
1553
kono
parents:
diff changeset
1554 Target_Dependent_Info_Write_Name : String_Ptr := null;
kono
parents:
diff changeset
1555 -- GNAT
kono
parents:
diff changeset
1556 -- Set non-null to enable a call to Set_Targ.Write_Target_Dependent_Info
kono
parents:
diff changeset
1557 -- which writes a target independent information file (see packages
kono
parents:
diff changeset
1558 -- Get_Targ and Set_Targ for full details) using the name given by
kono
parents:
diff changeset
1559 -- this switch. Set to non-null file name by use of the -gnatet switch.
kono
parents:
diff changeset
1560
kono
parents:
diff changeset
1561 type Origin_Of_Target is (Unknown, Default, Specified);
kono
parents:
diff changeset
1562
kono
parents:
diff changeset
1563 Target_Origin : Origin_Of_Target := Unknown;
kono
parents:
diff changeset
1564 -- GPRBUILD
kono
parents:
diff changeset
1565 -- Indicates the origin of attribute Target in project files
kono
parents:
diff changeset
1566
kono
parents:
diff changeset
1567 Target_Value : String_Access := null;
kono
parents:
diff changeset
1568 -- GPRBUILD
kono
parents:
diff changeset
1569 -- Indicates the value of attribute Target in project files
kono
parents:
diff changeset
1570
kono
parents:
diff changeset
1571 Task_Dispatching_Policy : Character := ' ';
kono
parents:
diff changeset
1572 -- GNAT, GNATBIND
kono
parents:
diff changeset
1573 -- Set to ' ' for the default case (no task dispatching policy specified).
kono
parents:
diff changeset
1574 -- Reset to first character (uppercase) of task dispatching policy name
kono
parents:
diff changeset
1575 -- if a valid Task_Dispatching_Policy pragma is encountered.
kono
parents:
diff changeset
1576
kono
parents:
diff changeset
1577 Task_Dispatching_Policy_Sloc : Source_Ptr := No_Location;
kono
parents:
diff changeset
1578 -- GNAT, GNATBIND
kono
parents:
diff changeset
1579 -- Remember location of previous Task_Dispatching_Policy pragma. This is
kono
parents:
diff changeset
1580 -- used for inconsistency error messages. A value of System_Location is
kono
parents:
diff changeset
1581 -- used if the policy is set in package System.
kono
parents:
diff changeset
1582
kono
parents:
diff changeset
1583 Tasking_Used : Boolean := False;
kono
parents:
diff changeset
1584 -- Set True if any tasking construct is encountered. Used to activate the
kono
parents:
diff changeset
1585 -- output of the Q, L and T lines in ALI files.
kono
parents:
diff changeset
1586
kono
parents:
diff changeset
1587 Time_Slice_Set : Boolean := False;
kono
parents:
diff changeset
1588 -- GNATBIND
kono
parents:
diff changeset
1589 -- Set True if a pragma Time_Slice is processed in the main unit, or
kono
parents:
diff changeset
1590 -- if the -gnatTnn switch is present to set a time slice value.
kono
parents:
diff changeset
1591
kono
parents:
diff changeset
1592 Time_Slice_Value : Nat;
kono
parents:
diff changeset
1593 -- GNATBIND
kono
parents:
diff changeset
1594 -- Time slice value. Valid only if Time_Slice_Set is True, i.e. if
kono
parents:
diff changeset
1595 -- Time_Slice pragma has been processed. Set to the time slice value in
kono
parents:
diff changeset
1596 -- microseconds. Negative values are stored as zero, and the value is not
kono
parents:
diff changeset
1597 -- larger than 1_000_000_000 (1000 seconds). Values larger than this are
kono
parents:
diff changeset
1598 -- reset to this maximum. This can also be set with the -gnatTnn switch.
kono
parents:
diff changeset
1599
kono
parents:
diff changeset
1600 Tolerate_Consistency_Errors : Boolean := False;
kono
parents:
diff changeset
1601 -- GNATBIND
kono
parents:
diff changeset
1602 -- Tolerate time stamp and other consistency errors. If this flag is set to
kono
parents:
diff changeset
1603 -- True (-t), then inconsistencies result in warnings rather than errors.
kono
parents:
diff changeset
1604
kono
parents:
diff changeset
1605 Treat_Categorization_Errors_As_Warnings : Boolean := False;
kono
parents:
diff changeset
1606 -- Normally categorization errors are true illegalities. If this switch
kono
parents:
diff changeset
1607 -- is set, then such errors result in warning messages rather than error
kono
parents:
diff changeset
1608 -- messages. Set True by -gnateP (P for Pure/Preelaborate). Also set in
kono
parents:
diff changeset
1609 -- Relaxed_RM_Semantics mode since some old Ada 83 compilers treated
kono
parents:
diff changeset
1610 -- pragma Preelaborate differently.
kono
parents:
diff changeset
1611
kono
parents:
diff changeset
1612 Treat_Restrictions_As_Warnings : Boolean := False;
kono
parents:
diff changeset
1613 -- GNAT
kono
parents:
diff changeset
1614 -- Set True to treat pragma Restrictions as Restriction_Warnings. Set by
kono
parents:
diff changeset
1615 -- -gnatr switch.
kono
parents:
diff changeset
1616
kono
parents:
diff changeset
1617 Tree_Output : Boolean := False;
kono
parents:
diff changeset
1618 -- GNAT
kono
parents:
diff changeset
1619 -- Set to True (-gnatt) to generate output tree file
kono
parents:
diff changeset
1620
kono
parents:
diff changeset
1621 Try_Semantics : Boolean := False;
kono
parents:
diff changeset
1622 -- GNAT
kono
parents:
diff changeset
1623 -- Flag set to force attempt at semantic analysis, even if parser errors
kono
parents:
diff changeset
1624 -- occur. This will probably cause blowups at this stage in the game. On
kono
parents:
diff changeset
1625 -- the other hand, most such blowups will be caught cleanly and simply
kono
parents:
diff changeset
1626 -- say compilation abandoned. This flag is set True by -gnatq or -gnatQ.
kono
parents:
diff changeset
1627
kono
parents:
diff changeset
1628 Unchecked_Shared_Lib_Imports : Boolean := False;
kono
parents:
diff changeset
1629 -- GPRBUILD
kono
parents:
diff changeset
1630 -- Set to True when shared library projects are allowed to import projects
kono
parents:
diff changeset
1631 -- that are not shared library projects. Set on by use of the switch
kono
parents:
diff changeset
1632 -- --unchecked-shared-lib-imports.
kono
parents:
diff changeset
1633
kono
parents:
diff changeset
1634 Undefined_Symbols_Are_False : Boolean := False;
kono
parents:
diff changeset
1635 -- GNAT, GNATPREP
kono
parents:
diff changeset
1636 -- Set to True by switch -u of gnatprep or -u in the preprocessing data
kono
parents:
diff changeset
1637 -- file for the compiler. Indicates that while preprocessing sources,
kono
parents:
diff changeset
1638 -- symbols that are not defined have the value FALSE.
kono
parents:
diff changeset
1639
kono
parents:
diff changeset
1640 Uneval_Old : Character := 'E';
kono
parents:
diff changeset
1641 -- GNAT
kono
parents:
diff changeset
1642 -- Set to 'E'/'W'/'A' for use of Error/Warn/Allow in a valid pragma
kono
parents:
diff changeset
1643 -- Unevaluated_Use_Of_Old. Default in the absence of the pragma is 'E'
kono
parents:
diff changeset
1644 -- for the RM default behavior of giving an error.
kono
parents:
diff changeset
1645
kono
parents:
diff changeset
1646 Unique_Error_Tag : Boolean := Tag_Errors;
kono
parents:
diff changeset
1647 -- GNAT
kono
parents:
diff changeset
1648 -- Indicates if error messages are to be prefixed by the string error:
kono
parents:
diff changeset
1649 -- Initialized from Tag_Errors, can be forced on with the -gnatU switch.
kono
parents:
diff changeset
1650
kono
parents:
diff changeset
1651 Unnest_Subprogram_Mode : Boolean := False;
kono
parents:
diff changeset
1652 -- If true, activates the circuitry for unnesting subprograms (see the spec
kono
parents:
diff changeset
1653 -- of Exp_Unst for full details). Currently set only by use of -gnatd.1.
kono
parents:
diff changeset
1654
kono
parents:
diff changeset
1655 Unreserve_All_Interrupts : Boolean := False;
kono
parents:
diff changeset
1656 -- GNAT, GNATBIND
kono
parents:
diff changeset
1657 -- Normally set False, set True if a valid Unreserve_All_Interrupts pragma
kono
parents:
diff changeset
1658 -- appears anywhere in the main unit for GNAT, or if any ALI file has the
kono
parents:
diff changeset
1659 -- corresponding attribute set in GNATBIND.
kono
parents:
diff changeset
1660
kono
parents:
diff changeset
1661 Upper_Half_Encoding : Boolean := False;
kono
parents:
diff changeset
1662 -- GNAT, GNATBIND
kono
parents:
diff changeset
1663 -- Normally set False, indicating that upper half ISO 8859-1 characters are
kono
parents:
diff changeset
1664 -- used in the normal way to represent themselves. If the wide character
kono
parents:
diff changeset
1665 -- encoding method uses the upper bit for this encoding, then this flag is
kono
parents:
diff changeset
1666 -- set True, and upper half characters in the source indicate the start of
kono
parents:
diff changeset
1667 -- a wide character sequence. Set by -gnatW or -W switches.
kono
parents:
diff changeset
1668
kono
parents:
diff changeset
1669 Use_Include_Path_File : Boolean := False;
kono
parents:
diff changeset
1670 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
1671 -- When True, create a source search path file, even when a mapping file
kono
parents:
diff changeset
1672 -- is used.
kono
parents:
diff changeset
1673
kono
parents:
diff changeset
1674 Usage_Requested : Boolean := False;
kono
parents:
diff changeset
1675 -- GNAT, GNATBIND, GNATMAKE
kono
parents:
diff changeset
1676 -- Set to True if -h (-gnath for the compiler) switch encountered
kono
parents:
diff changeset
1677 -- requesting usage information
kono
parents:
diff changeset
1678
kono
parents:
diff changeset
1679 Use_Pragma_Linker_Constructor : Boolean := False;
kono
parents:
diff changeset
1680 -- GNATBIND
kono
parents:
diff changeset
1681 -- True if pragma Linker_Constructor applies to adainit
kono
parents:
diff changeset
1682
kono
parents:
diff changeset
1683 Use_VADS_Size : Boolean := False;
kono
parents:
diff changeset
1684 -- GNAT
kono
parents:
diff changeset
1685 -- Set to True if a valid pragma Use_VADS_Size is processed
kono
parents:
diff changeset
1686
kono
parents:
diff changeset
1687 Validity_Checks_On : Boolean := True;
kono
parents:
diff changeset
1688 -- GNAT
kono
parents:
diff changeset
1689 -- This flag determines if validity checking is on or off. The initial
kono
parents:
diff changeset
1690 -- state is on, and the required default validity checks are active. The
kono
parents:
diff changeset
1691 -- actual set of checks that is performed if Validity_Checks_On is set is
kono
parents:
diff changeset
1692 -- defined by the switches in package Validsw. The Validity_Checks_On flag
kono
parents:
diff changeset
1693 -- is controlled by pragma Validity_Checks (On | Off), and also some
kono
parents:
diff changeset
1694 -- generated compiler code (typically code that has to do with validity
kono
parents:
diff changeset
1695 -- check generation) is compiled with this flag set to False. This flag is
kono
parents:
diff changeset
1696 -- set to False by the -gnatp switch.
kono
parents:
diff changeset
1697
kono
parents:
diff changeset
1698 Verbose_Mode : Boolean := False;
kono
parents:
diff changeset
1699 -- GNAT, GNATBIND, GNATMAKE, GNATLINK, GNATLS, GNATNAME, GNATCLEAN,
kono
parents:
diff changeset
1700 -- GPRBUILD, GPRCLEAN
kono
parents:
diff changeset
1701 -- Set to True to get verbose mode (full error message text and location
kono
parents:
diff changeset
1702 -- information sent to standard output, also header, copyright and summary)
kono
parents:
diff changeset
1703
kono
parents:
diff changeset
1704 type Verbosity_Level_Type is (None, Low, Medium, High);
kono
parents:
diff changeset
1705 pragma Ordered (Verbosity_Level_Type);
kono
parents:
diff changeset
1706 Verbosity_Level : Verbosity_Level_Type := High;
kono
parents:
diff changeset
1707 -- GNATMAKE
kono
parents:
diff changeset
1708 -- Modified by gnatmake switches -v, -vl, -vm, -vh. Indicates
kono
parents:
diff changeset
1709 -- the level of verbosity of informational messages:
kono
parents:
diff changeset
1710 --
kono
parents:
diff changeset
1711 -- In Low Verbosity, the reasons why a source is recompiled, the name
kono
parents:
diff changeset
1712 -- of the executable and the reason it must be rebuilt is output.
kono
parents:
diff changeset
1713 --
kono
parents:
diff changeset
1714 -- In Medium Verbosity, additional lines are output for each ALI file
kono
parents:
diff changeset
1715 -- that is checked.
kono
parents:
diff changeset
1716 --
kono
parents:
diff changeset
1717 -- In High Verbosity, additional lines are output when the ALI file
kono
parents:
diff changeset
1718 -- is part of an Ada library, is read-only or is part of the runtime.
kono
parents:
diff changeset
1719
kono
parents:
diff changeset
1720 Warn_On_Ada_2005_Compatibility : Boolean := True;
kono
parents:
diff changeset
1721 -- GNAT
kono
parents:
diff changeset
1722 -- Set to True to generate all warnings on Ada 2005 compatibility issues,
kono
parents:
diff changeset
1723 -- including warnings on Ada 2005 obsolescent features used in Ada 2005
kono
parents:
diff changeset
1724 -- mode. Set by default, modified by use of -gnatwy/Y.
kono
parents:
diff changeset
1725
kono
parents:
diff changeset
1726 Warn_On_Ada_2012_Compatibility : Boolean := True;
kono
parents:
diff changeset
1727 -- GNAT
kono
parents:
diff changeset
1728 -- Set to True to generate all warnings on Ada 2012 compatibility issues,
kono
parents:
diff changeset
1729 -- including warnings on Ada 2012 obsolescent features used in Ada 2012
kono
parents:
diff changeset
1730 -- mode. Modified by use of -gnatwy/Y.
kono
parents:
diff changeset
1731
kono
parents:
diff changeset
1732 Warn_On_All_Unread_Out_Parameters : Boolean := False;
kono
parents:
diff changeset
1733 -- GNAT
kono
parents:
diff changeset
1734 -- Set to True to generate warnings in all cases where a variable is
kono
parents:
diff changeset
1735 -- modified by being passed as to an OUT formal, but the resulting value is
kono
parents:
diff changeset
1736 -- never read. The default is that this warning is suppressed. Modified
kono
parents:
diff changeset
1737 -- by use of gnatw.o/.O.
kono
parents:
diff changeset
1738
kono
parents:
diff changeset
1739 Warn_On_Assertion_Failure : Boolean := True;
kono
parents:
diff changeset
1740 -- GNAT
kono
parents:
diff changeset
1741 -- Set to True to activate warnings on assertions that can be determined
kono
parents:
diff changeset
1742 -- at compile time will always fail. Modified by use of -gnatw.a/.A.
kono
parents:
diff changeset
1743
kono
parents:
diff changeset
1744 Warn_On_Assumed_Low_Bound : Boolean := True;
kono
parents:
diff changeset
1745 -- GNAT
kono
parents:
diff changeset
1746 -- Set to True to activate warnings for string parameters that are indexed
kono
parents:
diff changeset
1747 -- with literals or S'Length, presumably assuming a lower bound of one.
kono
parents:
diff changeset
1748 -- Modified by use of -gnatww/W.
kono
parents:
diff changeset
1749
kono
parents:
diff changeset
1750 Warn_On_Atomic_Synchronization : Boolean := False;
kono
parents:
diff changeset
1751 -- GNAT
kono
parents:
diff changeset
1752 -- Set to True to generate information messages for atomic synchronization.
kono
parents:
diff changeset
1753 -- Modified by use of -gnatw.n/.N.
kono
parents:
diff changeset
1754
kono
parents:
diff changeset
1755 Warn_On_Bad_Fixed_Value : Boolean := False;
kono
parents:
diff changeset
1756 -- GNAT
kono
parents:
diff changeset
1757 -- Set to True to generate warnings for static fixed-point expression
kono
parents:
diff changeset
1758 -- values that are not an exact multiple of the small value of the type.
kono
parents:
diff changeset
1759 -- Odd by default, modified by use of -gnatwb/B.
kono
parents:
diff changeset
1760
kono
parents:
diff changeset
1761 Warn_On_Biased_Representation : Boolean := True;
kono
parents:
diff changeset
1762 -- GNAT
kono
parents:
diff changeset
1763 -- Set to True to generate warnings for size clauses, component clauses
kono
parents:
diff changeset
1764 -- and component_size clauses that force biased representation. Modified
kono
parents:
diff changeset
1765 -- by use of -gnatw.b/.B.
kono
parents:
diff changeset
1766
kono
parents:
diff changeset
1767 Warn_On_Constant : Boolean := False;
kono
parents:
diff changeset
1768 -- GNAT
kono
parents:
diff changeset
1769 -- Set to True to generate warnings for variables that could be declared
kono
parents:
diff changeset
1770 -- as constants. Modified by use of -gnatwk/K.
kono
parents:
diff changeset
1771
kono
parents:
diff changeset
1772 Warn_On_Deleted_Code : Boolean := False;
kono
parents:
diff changeset
1773 -- GNAT
kono
parents:
diff changeset
1774 -- Set to True to generate warnings for code deleted by the front end
kono
parents:
diff changeset
1775 -- for conditional statements whose outcome is known at compile time.
kono
parents:
diff changeset
1776 -- Modified by use of -gnatwt/T.
kono
parents:
diff changeset
1777
kono
parents:
diff changeset
1778 Warn_On_Dereference : Boolean := False;
kono
parents:
diff changeset
1779 -- GNAT
kono
parents:
diff changeset
1780 -- Set to True to generate warnings for implicit dereferences for array
kono
parents:
diff changeset
1781 -- indexing and record component access. Modified by use of -gnatwd/D.
kono
parents:
diff changeset
1782
kono
parents:
diff changeset
1783 Warn_On_Export_Import : Boolean := True;
kono
parents:
diff changeset
1784 -- GNAT
kono
parents:
diff changeset
1785 -- Set to True to generate warnings for suspicious use of export or
kono
parents:
diff changeset
1786 -- import pragmas. Modified by use of -gnatwx/X.
kono
parents:
diff changeset
1787
kono
parents:
diff changeset
1788 Warn_On_Elab_Access : Boolean := False;
kono
parents:
diff changeset
1789 -- GNAT
kono
parents:
diff changeset
1790 -- Set to True to generate warnings for P'Access in the case where
kono
parents:
diff changeset
1791 -- subprogram P is in the same package as the P'Access, and the P'Access is
kono
parents:
diff changeset
1792 -- evaluated at package elaboration time, and occurs before the body of P
kono
parents:
diff changeset
1793 -- has been elaborated.
kono
parents:
diff changeset
1794
kono
parents:
diff changeset
1795 Warn_On_Hiding : Boolean := False;
kono
parents:
diff changeset
1796 -- GNAT
kono
parents:
diff changeset
1797 -- Set to True to generate warnings if a declared entity hides another
kono
parents:
diff changeset
1798 -- entity. The default is that this warning is suppressed. Modified by
kono
parents:
diff changeset
1799 -- use of -gnatwh/H.
kono
parents:
diff changeset
1800
kono
parents:
diff changeset
1801 Warn_On_Modified_Unread : Boolean := False;
kono
parents:
diff changeset
1802 -- GNAT
kono
parents:
diff changeset
1803 -- Set to True to generate warnings if a variable is assigned but is never
kono
parents:
diff changeset
1804 -- read. Also controls warnings for similar cases involving out parameters,
kono
parents:
diff changeset
1805 -- but only if there is only one out parameter for the procedure involved.
kono
parents:
diff changeset
1806 -- The default is that this warning is suppressed, modified by use of
kono
parents:
diff changeset
1807 -- -gnatwm/M.
kono
parents:
diff changeset
1808
kono
parents:
diff changeset
1809 Warn_On_No_Value_Assigned : Boolean := True;
kono
parents:
diff changeset
1810 -- GNAT
kono
parents:
diff changeset
1811 -- Set to True to generate warnings if no value is ever assigned to a
kono
parents:
diff changeset
1812 -- variable that is at least partially uninitialized. Set to false to
kono
parents:
diff changeset
1813 -- suppress such warnings. The default is that such warnings are enabled.
kono
parents:
diff changeset
1814 -- Modified by use of -gnatwv/V.
kono
parents:
diff changeset
1815
kono
parents:
diff changeset
1816 Warn_On_Non_Local_Exception : Boolean := False;
kono
parents:
diff changeset
1817 -- GNAT
kono
parents:
diff changeset
1818 -- Set to True to generate warnings for non-local exception raises and also
kono
parents:
diff changeset
1819 -- handlers that can never handle a local raise. This warning is only ever
kono
parents:
diff changeset
1820 -- generated if pragma Restrictions (No_Exception_Propagation) is set. The
kono
parents:
diff changeset
1821 -- default is not to generate the warnings except that if the source has
kono
parents:
diff changeset
1822 -- at least one exception handler, and this restriction is set, and the
kono
parents:
diff changeset
1823 -- warning was not explicitly turned off, then it is turned on by default.
kono
parents:
diff changeset
1824 -- Modified by use of -gnatw.x/.X.
kono
parents:
diff changeset
1825
kono
parents:
diff changeset
1826 No_Warn_On_Non_Local_Exception : Boolean := False;
kono
parents:
diff changeset
1827 -- GNAT
kono
parents:
diff changeset
1828 -- This is set to True if the above warning is explicitly suppressed. We
kono
parents:
diff changeset
1829 -- use this to avoid turning it on by default when No_Exception_Propagation
kono
parents:
diff changeset
1830 -- restriction is set and an exception handler is present.
kono
parents:
diff changeset
1831
kono
parents:
diff changeset
1832 Warn_On_Object_Renames_Function : Boolean := False;
kono
parents:
diff changeset
1833 -- GNAT
kono
parents:
diff changeset
1834 -- Set to True to generate warnings when a function result is renamed as
kono
parents:
diff changeset
1835 -- an object. The default is that this warning is disabled. Modified by
kono
parents:
diff changeset
1836 -- use of -gnatw.r/.R.
kono
parents:
diff changeset
1837
kono
parents:
diff changeset
1838 Warn_On_Obsolescent_Feature : Boolean := False;
kono
parents:
diff changeset
1839 -- GNAT
kono
parents:
diff changeset
1840 -- Set to True to generate warnings on use of any feature in Annex or if a
kono
parents:
diff changeset
1841 -- subprogram is called for which a pragma Obsolescent applies. Modified
kono
parents:
diff changeset
1842 -- by use of -gnatwj/J.
kono
parents:
diff changeset
1843
kono
parents:
diff changeset
1844 Warn_On_Overlap : Boolean := False;
kono
parents:
diff changeset
1845 -- GNAT
kono
parents:
diff changeset
1846 -- Set to True to generate warnings when a writable actual overlaps with
kono
parents:
diff changeset
1847 -- another actual in a subprogram call. This applies only in modes before
kono
parents:
diff changeset
1848 -- Ada 2012. Starting with Ada 2012, such overlaps are illegal.
kono
parents:
diff changeset
1849 -- Modified by use of -gnatw.i/.I.
kono
parents:
diff changeset
1850
kono
parents:
diff changeset
1851 Warn_On_Questionable_Missing_Parens : Boolean := True;
kono
parents:
diff changeset
1852 -- GNAT
kono
parents:
diff changeset
1853 -- Set to True to generate warnings for cases where parentheses are missing
kono
parents:
diff changeset
1854 -- and the usage is questionable, because the intent is unclear. On by
kono
parents:
diff changeset
1855 -- default, modified by use of -gnatwq/Q.
kono
parents:
diff changeset
1856
kono
parents:
diff changeset
1857 Warn_On_Parameter_Order : Boolean := False;
kono
parents:
diff changeset
1858 -- GNAT
kono
parents:
diff changeset
1859 -- Set to True to generate warnings for cases where the argument list for
kono
parents:
diff changeset
1860 -- a call is a sequence of identifiers that match the formal identifiers,
kono
parents:
diff changeset
1861 -- but are in the wrong order.
kono
parents:
diff changeset
1862
kono
parents:
diff changeset
1863 Warn_On_Redundant_Constructs : Boolean := False;
kono
parents:
diff changeset
1864 -- GNAT
kono
parents:
diff changeset
1865 -- Set to True to generate warnings for redundant constructs (e.g. useless
kono
parents:
diff changeset
1866 -- assignments/conversions). The default is that this warning is disabled.
kono
parents:
diff changeset
1867 -- Modified by use of -gnatwr/R.
kono
parents:
diff changeset
1868
kono
parents:
diff changeset
1869 Warn_On_Reverse_Bit_Order : Boolean := True;
kono
parents:
diff changeset
1870 -- GNAT
kono
parents:
diff changeset
1871 -- Set to True to generate warning (informational) messages for component
kono
parents:
diff changeset
1872 -- clauses that are affected by non-standard bit-order. The default is
kono
parents:
diff changeset
1873 -- that this warning is enabled. Modified by -gnatw.v/.V.
kono
parents:
diff changeset
1874
kono
parents:
diff changeset
1875 Warn_On_Suspicious_Contract : Boolean := True;
kono
parents:
diff changeset
1876 -- GNAT
kono
parents:
diff changeset
1877 -- Set to True to generate warnings for suspicious contracts expressed as
kono
parents:
diff changeset
1878 -- pragmas or aspects precondition and postcondition, as well as other
kono
parents:
diff changeset
1879 -- suspicious cases of expressions typically found in contracts like
kono
parents:
diff changeset
1880 -- quantified expressions and uses of Update attribute. The default is that
kono
parents:
diff changeset
1881 -- this warning is enabled. Modified by use of -gnatw.t/.T.
kono
parents:
diff changeset
1882
kono
parents:
diff changeset
1883 Warn_On_Suspicious_Modulus_Value : Boolean := True;
kono
parents:
diff changeset
1884 -- GNAT
kono
parents:
diff changeset
1885 -- Set to True to generate warnings for suspicious modulus values. The
kono
parents:
diff changeset
1886 -- default is that this warning is enabled. Modified by -gnatw.m/.M.
kono
parents:
diff changeset
1887
kono
parents:
diff changeset
1888 Warn_On_Unchecked_Conversion : Boolean := True;
kono
parents:
diff changeset
1889 -- GNAT
kono
parents:
diff changeset
1890 -- Set to True to generate warnings for unchecked conversions that may have
kono
parents:
diff changeset
1891 -- non-portable semantics (e.g. because sizes of types differ). Modified
kono
parents:
diff changeset
1892 -- by use of -gnatwz/Z.
kono
parents:
diff changeset
1893
kono
parents:
diff changeset
1894 Warn_On_Unordered_Enumeration_Type : Boolean := False;
kono
parents:
diff changeset
1895 -- GNAT
kono
parents:
diff changeset
1896 -- Set to True to generate warnings for inappropriate uses (comparisons
kono
parents:
diff changeset
1897 -- and explicit ranges) on unordered enumeration types (which includes
kono
parents:
diff changeset
1898 -- all enumeration types for which pragma Ordered is not given). The
kono
parents:
diff changeset
1899 -- default is that this warning is disabled. Modified by -gnat.u/.U.
kono
parents:
diff changeset
1900
kono
parents:
diff changeset
1901 Warn_On_Unrecognized_Pragma : Boolean := True;
kono
parents:
diff changeset
1902 -- GNAT
kono
parents:
diff changeset
1903 -- Set to True to generate warnings for unrecognized pragmas. The default
kono
parents:
diff changeset
1904 -- is that this warning is enabled. Modified by use of -gnatwg/G.
kono
parents:
diff changeset
1905
kono
parents:
diff changeset
1906 Warn_On_Unrepped_Components : Boolean := False;
kono
parents:
diff changeset
1907 -- GNAT
kono
parents:
diff changeset
1908 -- Set to True to generate warnings for the case of components of record
kono
parents:
diff changeset
1909 -- which have a record representation clause but this component does not
kono
parents:
diff changeset
1910 -- have a component clause. Modified by use of -gnatw.c/.C.
kono
parents:
diff changeset
1911
kono
parents:
diff changeset
1912 Warn_On_Warnings_Off : Boolean := False;
kono
parents:
diff changeset
1913 -- GNAT
kono
parents:
diff changeset
1914 -- Set to True to generate warnings for use of Pragma Warnings (Off, ent),
kono
parents:
diff changeset
1915 -- where either the pragma is never used, or it could be replaced by a
kono
parents:
diff changeset
1916 -- pragma Unmodified or Unreferenced. Also generates warnings for pragma
kono
parents:
diff changeset
1917 -- Warning (Off, string) which either has no matching pragma Warning On,
kono
parents:
diff changeset
1918 -- or where no warning has been suppressed by the use of the pragma.
kono
parents:
diff changeset
1919 -- Modified by use of -gnatw.w/.W.
kono
parents:
diff changeset
1920
kono
parents:
diff changeset
1921 type Warning_Mode_Type is
kono
parents:
diff changeset
1922 (Suppress, Normal, Treat_As_Error, Treat_Run_Time_Warnings_As_Errors);
kono
parents:
diff changeset
1923 Warning_Mode : Warning_Mode_Type := Normal;
kono
parents:
diff changeset
1924 -- GNAT, GNATBIND
kono
parents:
diff changeset
1925 -- Controls treatment of warning messages. If set to Suppress, warning
kono
parents:
diff changeset
1926 -- messages are not generated at all. In Normal mode, they are generated
kono
parents:
diff changeset
1927 -- but do not count as errors. In Treat_As_Error mode, warning messages are
kono
parents:
diff changeset
1928 -- generated and treated as errors. In Treat_Run_Time_Warnings_As_Errors,
kono
parents:
diff changeset
1929 -- warning messages regarding errors raised at run time are treated as
kono
parents:
diff changeset
1930 -- errors. Note that Warning_Mode = Suppress causes pragma Warnings to be
kono
parents:
diff changeset
1931 -- ignored (except for legality checks), unless we are in GNATprove_Mode,
kono
parents:
diff changeset
1932 -- which requires pragma Warnings to be stored for the formal verification
kono
parents:
diff changeset
1933 -- backend.
kono
parents:
diff changeset
1934
kono
parents:
diff changeset
1935 Warnings_As_Errors_Count : Natural;
kono
parents:
diff changeset
1936 -- GNAT
kono
parents:
diff changeset
1937 -- Number of entries stored in Warnings_As_Errors table
kono
parents:
diff changeset
1938
kono
parents:
diff changeset
1939 Wide_Character_Encoding_Method : WC_Encoding_Method := WCEM_Brackets;
kono
parents:
diff changeset
1940 -- GNAT, GNATBIND
kono
parents:
diff changeset
1941 -- Method used for encoding wide characters in the source program. See
kono
parents:
diff changeset
1942 -- description of type in unit System.WCh_Con for a list of the methods
kono
parents:
diff changeset
1943 -- that are currently supported. Note that brackets notation is always
kono
parents:
diff changeset
1944 -- recognized in source programs regardless of the setting of this
kono
parents:
diff changeset
1945 -- variable. The default setting causes only the brackets notation to be
kono
parents:
diff changeset
1946 -- recognized. If this is the main unit, this setting also controls the
kono
parents:
diff changeset
1947 -- output of the W=? parameter in the ALI file, which is used to provide
kono
parents:
diff changeset
1948 -- the default for encoding [Wide_[Wide_]]Text_IO files. For the binder,
kono
parents:
diff changeset
1949 -- the value set here overrides this main unit default.
kono
parents:
diff changeset
1950
kono
parents:
diff changeset
1951 Wide_Character_Encoding_Method_Specified : Boolean := False;
kono
parents:
diff changeset
1952 -- GNAT, GNATBIND
kono
parents:
diff changeset
1953 -- Set True if the value in Wide_Character_Encoding_Method was set as
kono
parents:
diff changeset
1954 -- a result of an explicit -gnatW? or -W? switch. False otherwise.
kono
parents:
diff changeset
1955
kono
parents:
diff changeset
1956 Xref_Active : Boolean := True;
kono
parents:
diff changeset
1957 -- GNAT
kono
parents:
diff changeset
1958 -- Set if cross-referencing is enabled (i.e. xref info in ALI files)
kono
parents:
diff changeset
1959
kono
parents:
diff changeset
1960 Zero_Formatting : Boolean := False;
kono
parents:
diff changeset
1961 -- GNATBIND
kono
parents:
diff changeset
1962 -- Do no formatting (no title, no leading spaces, no empty lines) in
kono
parents:
diff changeset
1963 -- auxiliary outputs (-e, -K, -l, -R).
kono
parents:
diff changeset
1964
kono
parents:
diff changeset
1965 ----------------------------
kono
parents:
diff changeset
1966 -- Configuration Settings --
kono
parents:
diff changeset
1967 ----------------------------
kono
parents:
diff changeset
1968
kono
parents:
diff changeset
1969 -- These are settings that are used to establish the mode at the start of
kono
parents:
diff changeset
1970 -- each unit. The values defined below can be affected either by command
kono
parents:
diff changeset
1971 -- line switches, or by the use of appropriate configuration pragmas in a
kono
parents:
diff changeset
1972 -- configuration pragma file (but NOT by a local use of a configuration
kono
parents:
diff changeset
1973 -- pragma in a single file).
kono
parents:
diff changeset
1974
kono
parents:
diff changeset
1975 Ada_Version_Config : Ada_Version_Type;
kono
parents:
diff changeset
1976 -- GNAT
kono
parents:
diff changeset
1977 -- This is the value of the configuration switch for the Ada 83 mode, as
kono
parents:
diff changeset
1978 -- set by the command line switches -gnat83/95/2005/2012, and possibly
kono
parents:
diff changeset
1979 -- modified by the use of configuration pragmas Ada_*. This switch is used
kono
parents:
diff changeset
1980 -- to set the initial value for Ada_Version mode at the start of analysis
kono
parents:
diff changeset
1981 -- of a unit. Note however that the setting of this flag is ignored for
kono
parents:
diff changeset
1982 -- internal and predefined units (which are always compiled in the most up
kono
parents:
diff changeset
1983 -- to date version of Ada).
kono
parents:
diff changeset
1984
kono
parents:
diff changeset
1985 Ada_Version_Pragma_Config : Node_Id;
kono
parents:
diff changeset
1986 -- This will be set nonempty if it is set by a configuration pragma
kono
parents:
diff changeset
1987
kono
parents:
diff changeset
1988 Ada_Version_Explicit_Config : Ada_Version_Type;
kono
parents:
diff changeset
1989 -- GNAT
kono
parents:
diff changeset
1990 -- This is set in the same manner as Ada_Version_Config. The difference is
kono
parents:
diff changeset
1991 -- that the setting of this flag is not ignored for internal and predefined
kono
parents:
diff changeset
1992 -- units, which for some purposes do indeed access this value, regardless
kono
parents:
diff changeset
1993 -- of the fact that they are compiled the most up to date ada version).
kono
parents:
diff changeset
1994
kono
parents:
diff changeset
1995 Assertions_Enabled_Config : Boolean;
kono
parents:
diff changeset
1996 -- GNAT
kono
parents:
diff changeset
1997 -- This is the value of the configuration switch for assertions enabled
kono
parents:
diff changeset
1998 -- mode, as possibly set by the command line switch -gnata, and possibly
kono
parents:
diff changeset
1999 -- modified by the use of the configuration pragma Assertion_Policy.
kono
parents:
diff changeset
2000
kono
parents:
diff changeset
2001 Assume_No_Invalid_Values_Config : Boolean;
kono
parents:
diff changeset
2002 -- GNAT
kono
parents:
diff changeset
2003 -- This is the value of the configuration switch for assuming "no invalid
kono
parents:
diff changeset
2004 -- values enabled" mode, as possibly set by the command line switch
kono
parents:
diff changeset
2005 -- -gnatB, and possibly modified by the use of the configuration pragma
kono
parents:
diff changeset
2006 -- Assume_No_Invalid_Values.
kono
parents:
diff changeset
2007
kono
parents:
diff changeset
2008 Check_Float_Overflow_Config : Boolean;
kono
parents:
diff changeset
2009 -- GNAT
kono
parents:
diff changeset
2010 -- Set to True to check that operations on predefined unconstrained float
kono
parents:
diff changeset
2011 -- types (e.g. Float, Long_Float) do not overflow and generate infinities
kono
parents:
diff changeset
2012 -- or invalid values. Set by the Check_Float_Overflow pragma, or by use
kono
parents:
diff changeset
2013 -- of the -gnateF switch.
kono
parents:
diff changeset
2014
kono
parents:
diff changeset
2015 Check_Policy_List_Config : Node_Id;
kono
parents:
diff changeset
2016 -- GNAT
kono
parents:
diff changeset
2017 -- This points to the list of N_Pragma nodes for Check_Policy pragmas
kono
parents:
diff changeset
2018 -- that are linked through the Next_Pragma fields, with the list being
kono
parents:
diff changeset
2019 -- terminated by Empty. The order is most recently processed first. This
kono
parents:
diff changeset
2020 -- list includes only those pragmas in configuration pragma files.
kono
parents:
diff changeset
2021
kono
parents:
diff changeset
2022 Default_Pool_Config : Node_Id := Empty;
kono
parents:
diff changeset
2023 -- GNAT
kono
parents:
diff changeset
2024 -- Same as Default_Pool above, except this is only for Default_Storage_Pool
kono
parents:
diff changeset
2025 -- pragmas that are configuration pragmas.
kono
parents:
diff changeset
2026
kono
parents:
diff changeset
2027 Default_SSO_Config : Character := ' ';
kono
parents:
diff changeset
2028 -- GNAT
kono
parents:
diff changeset
2029 -- Set if a pragma Default_Scalar_Storage_Order appears as a configuration
kono
parents:
diff changeset
2030 -- pragma. A value of ' ' means that no pragma was given, otherwise the
kono
parents:
diff changeset
2031 -- value is 'H' for High_Order_First or 'L' for Low_Order_First.
kono
parents:
diff changeset
2032
kono
parents:
diff changeset
2033 Dynamic_Elaboration_Checks_Config : Boolean := False;
kono
parents:
diff changeset
2034 -- GNAT
kono
parents:
diff changeset
2035 -- Set True for dynamic elaboration checking mode, as set by the -gnatE
kono
parents:
diff changeset
2036 -- switch or by the use of pragma Elaboration_Checking (Dynamic).
kono
parents:
diff changeset
2037
kono
parents:
diff changeset
2038 Exception_Locations_Suppressed_Config : Boolean := False;
kono
parents:
diff changeset
2039 -- GNAT
kono
parents:
diff changeset
2040 -- Set True by use of the configuration pragma Suppress_Exception_Messages
kono
parents:
diff changeset
2041
kono
parents:
diff changeset
2042 Extensions_Allowed_Config : Boolean;
kono
parents:
diff changeset
2043 -- GNAT
kono
parents:
diff changeset
2044 -- This is the flag that indicates whether extensions are allowed. It can
kono
parents:
diff changeset
2045 -- be set True either by use of the -gnatX switch, or by use of the
kono
parents:
diff changeset
2046 -- configuration pragma Extensions_Allowed (On). It is always set to True
kono
parents:
diff changeset
2047 -- for internal GNAT units, since extensions are always permitted in such
kono
parents:
diff changeset
2048 -- units.
kono
parents:
diff changeset
2049
kono
parents:
diff changeset
2050 External_Name_Exp_Casing_Config : External_Casing_Type;
kono
parents:
diff changeset
2051 -- GNAT
kono
parents:
diff changeset
2052 -- This is the value of the configuration switch that controls casing of
kono
parents:
diff changeset
2053 -- external symbols for which an explicit external name is given. It can be
kono
parents:
diff changeset
2054 -- set to Uppercase by the command line switch -gnatF, and further modified
kono
parents:
diff changeset
2055 -- by the use of the configuration pragma External_Name_Casing in the
kono
parents:
diff changeset
2056 -- gnat.adc file. This flag is used to set the initial value for
kono
parents:
diff changeset
2057 -- External_Name_Exp_Casing at the start of analyzing each unit. Note
kono
parents:
diff changeset
2058 -- however that the setting of this flag is ignored for internal and
kono
parents:
diff changeset
2059 -- predefined units (which are always compiled with As_Is mode).
kono
parents:
diff changeset
2060
kono
parents:
diff changeset
2061 External_Name_Imp_Casing_Config : External_Casing_Type;
kono
parents:
diff changeset
2062 -- GNAT
kono
parents:
diff changeset
2063 -- This is the value of the configuration switch that controls casing of
kono
parents:
diff changeset
2064 -- external symbols where the external name is implicitly given. It can be
kono
parents:
diff changeset
2065 -- set to Uppercase by the command line switch -gnatF, and further modified
kono
parents:
diff changeset
2066 -- by the use of the configuration pragma External_Name_Casing in the
kono
parents:
diff changeset
2067 -- gnat.adc file. This flag is used to set the initial value for
kono
parents:
diff changeset
2068 -- External_Name_Imp_Casing at the start of analyzing each unit. Note
kono
parents:
diff changeset
2069 -- however that the setting of this flag is ignored for internal and
kono
parents:
diff changeset
2070 -- predefined units (which are always compiled with Lowercase mode).
kono
parents:
diff changeset
2071
kono
parents:
diff changeset
2072 Fast_Math_Config : Boolean;
kono
parents:
diff changeset
2073 -- GNAT
kono
parents:
diff changeset
2074 -- This is the value of the configuration switch that controls Fast_Math
kono
parents:
diff changeset
2075 -- mode, as set by a Fast_Math pragma in configuration pragmas. It is
kono
parents:
diff changeset
2076 -- used to set the initial value of Fast_Math at the start of each new
kono
parents:
diff changeset
2077 -- compilation unit.
kono
parents:
diff changeset
2078
kono
parents:
diff changeset
2079 Initialize_Scalars_Config : Boolean;
kono
parents:
diff changeset
2080 -- GNAT
kono
parents:
diff changeset
2081 -- This is the value of the configuration switch that is set by the
kono
parents:
diff changeset
2082 -- pragma Initialize_Scalars when it appears in the gnat.adc file.
kono
parents:
diff changeset
2083 -- This switch is not set when the pragma appears ahead of a given
kono
parents:
diff changeset
2084 -- unit, so it does not affect the compilation of other units.
kono
parents:
diff changeset
2085
kono
parents:
diff changeset
2086 No_Component_Reordering_Config : Boolean;
kono
parents:
diff changeset
2087 -- GNAT
kono
parents:
diff changeset
2088 -- This is the value of the configuration switch that is set by the
kono
parents:
diff changeset
2089 -- pragma No_Component_Reordering when it appears in the gnat.adc file.
kono
parents:
diff changeset
2090 -- This flag is used to set the initial value of No_Component_Reordering
kono
parents:
diff changeset
2091 -- at the start of each compilation unit, except that it is always set
kono
parents:
diff changeset
2092 -- False for predefined units.
kono
parents:
diff changeset
2093
kono
parents:
diff changeset
2094 No_Exit_Message : Boolean := False;
kono
parents:
diff changeset
2095 -- GNATMAKE, GPRBUILD
kono
parents:
diff changeset
2096 -- Set with switch --no-exit-message. When True, if there are compilation
kono
parents:
diff changeset
2097 -- failures, the builder does not issue an exit error message.
kono
parents:
diff changeset
2098
kono
parents:
diff changeset
2099 Optimize_Alignment_Config : Character;
kono
parents:
diff changeset
2100 -- GNAT
kono
parents:
diff changeset
2101 -- This is the value of the configuration switch that controls the
kono
parents:
diff changeset
2102 -- alignment optimization mode, as set by an Optimize_Alignment pragma.
kono
parents:
diff changeset
2103 -- It is used to set the initial value of Optimize_Alignment at the start
kono
parents:
diff changeset
2104 -- of each new compilation unit, except that it is always set to 'O' (off)
kono
parents:
diff changeset
2105 -- for internal units.
kono
parents:
diff changeset
2106
kono
parents:
diff changeset
2107 Persistent_BSS_Mode_Config : Boolean;
kono
parents:
diff changeset
2108 -- GNAT
kono
parents:
diff changeset
2109 -- This is the value of the configuration switch that controls whether
kono
parents:
diff changeset
2110 -- potentially persistent data is to be placed in the persistent_bss
kono
parents:
diff changeset
2111 -- section. It can be set True by use of the pragma Persistent_BSS.
kono
parents:
diff changeset
2112 -- This flag is used to set the initial value of Persistent_BSS_Mode
kono
parents:
diff changeset
2113 -- at the start of each compilation unit, except that it is always
kono
parents:
diff changeset
2114 -- set False for predefined units.
kono
parents:
diff changeset
2115
kono
parents:
diff changeset
2116 Polling_Required_Config : Boolean;
kono
parents:
diff changeset
2117 -- GNAT
kono
parents:
diff changeset
2118 -- This is the value of the configuration switch that controls polling
kono
parents:
diff changeset
2119 -- mode. It can be set True by the command line switch -gnatP, and then
kono
parents:
diff changeset
2120 -- further modified by the use of pragma Polling in the gnat.adc file. This
kono
parents:
diff changeset
2121 -- flag is used to set the initial value for Polling_Required at the start
kono
parents:
diff changeset
2122 -- of analyzing each unit.
kono
parents:
diff changeset
2123
kono
parents:
diff changeset
2124 Prefix_Exception_Messages_Config : Boolean;
kono
parents:
diff changeset
2125 -- The setting of Prefix_Exception_Messages from configuration pragmas
kono
parents:
diff changeset
2126
kono
parents:
diff changeset
2127 SPARK_Mode_Config : SPARK_Mode_Type := None;
kono
parents:
diff changeset
2128 -- GNAT
kono
parents:
diff changeset
2129 -- The setting of SPARK_Mode from configuration pragmas
kono
parents:
diff changeset
2130
kono
parents:
diff changeset
2131 SPARK_Mode_Pragma_Config : Node_Id := Empty;
kono
parents:
diff changeset
2132 -- If a SPARK_Mode pragma appeared in the configuration pragmas (setting
kono
parents:
diff changeset
2133 -- SPARK_Mode_Config appropriately), then this points to the N_Pragma node.
kono
parents:
diff changeset
2134
kono
parents:
diff changeset
2135 Uneval_Old_Config : Character;
kono
parents:
diff changeset
2136 -- GNAT
kono
parents:
diff changeset
2137 -- The setting of Uneval_Old from configuration pragmas
kono
parents:
diff changeset
2138
kono
parents:
diff changeset
2139 Use_VADS_Size_Config : Boolean;
kono
parents:
diff changeset
2140 -- GNAT
kono
parents:
diff changeset
2141 -- This is the value of the configuration switch that controls the use of
kono
parents:
diff changeset
2142 -- VADS_Size instead of Size wherever the attribute Size is used. It can
kono
parents:
diff changeset
2143 -- be set True by the use of the pragma Use_VADS_Size in the gnat.adc file.
kono
parents:
diff changeset
2144 -- This flag is used to set the initial value for Use_VADS_Size at the
kono
parents:
diff changeset
2145 -- start of analyzing each unit. Note however that the setting of this flag
kono
parents:
diff changeset
2146 -- is ignored for internal and predefined units (which are always compiled
kono
parents:
diff changeset
2147 -- with the standard Size semantics).
kono
parents:
diff changeset
2148
kono
parents:
diff changeset
2149 Warnings_As_Errors_Count_Config : Natural;
kono
parents:
diff changeset
2150 -- GNAT
kono
parents:
diff changeset
2151 -- Count of pattern strings stored from Warning_As_Error pragmas
kono
parents:
diff changeset
2152
kono
parents:
diff changeset
2153 type Config_Switches_Type is private;
kono
parents:
diff changeset
2154 -- Type used to save values of the switches set from Config values
kono
parents:
diff changeset
2155
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2156 procedure Register_Config_Switches;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2157 -- This procedure is called after processing the gnat.adc file and other
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2158 -- configuration pragma files to record the values of the Config switches,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2159 -- as possibly modified by the use of command line switches and pragmas
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2160 -- appearing in these files.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2161
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2162 procedure Restore_Config_Switches (Save : Config_Switches_Type);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2163 -- This procedure restores a set of switch values previously saved by a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2164 -- call to Save_Config_Switches.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2165
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2166 function Save_Config_Switches return Config_Switches_Type;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2167 -- Return the current state of all configuration-related attributes
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2168
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2169 procedure Set_Config_Switches
111
kono
parents:
diff changeset
2170 (Internal_Unit : Boolean;
kono
parents:
diff changeset
2171 Main_Unit : Boolean);
kono
parents:
diff changeset
2172 -- This procedure sets the switches to the appropriate initial values. The
kono
parents:
diff changeset
2173 -- parameter Internal_Unit is True for an internal or predefined unit, and
kono
parents:
diff changeset
2174 -- affects the way the switches are set (see above). Main_Unit is true if
kono
parents:
diff changeset
2175 -- switches are being set for the main unit or for the spec of the main
kono
parents:
diff changeset
2176 -- unit. This affects setting of the assert/debug pragma switches, which
kono
parents:
diff changeset
2177 -- are normally set false by default for an internal unit, except when the
kono
parents:
diff changeset
2178 -- internal unit is the main unit, in which case we use the command line
kono
parents:
diff changeset
2179 -- settings.
kono
parents:
diff changeset
2180
kono
parents:
diff changeset
2181 ------------------------
kono
parents:
diff changeset
2182 -- Other Global Flags --
kono
parents:
diff changeset
2183 ------------------------
kono
parents:
diff changeset
2184
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2185 Building_Static_Dispatch_Tables : Boolean := True;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2186 -- This flag indicates if the backend supports generation of statically
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2187 -- allocated dispatch tables. If it is True, then the front end will
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2188 -- generate static aggregates for dispatch tables that contain forward
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2189 -- references to addresses of subprograms not seen yet, and the back end
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2190 -- must be prepared to handle this case. If it is False, then the front
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2191 -- end generates assignments to initialize the dispatch table, and there
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2192 -- are no such forward references. By default we build statically allocated
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2193 -- dispatch tables for all library level tagged types in all platforms.This
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2194 -- behavior can be disabled using switch -gnatd.t which will set this flag
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2195 -- to False and revert to the previous dynamic behavior.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2196
111
kono
parents:
diff changeset
2197 Expander_Active : Boolean := False;
kono
parents:
diff changeset
2198 -- A flag that indicates if expansion is active (True) or deactivated
kono
parents:
diff changeset
2199 -- (False). When expansion is deactivated all calls to expander routines
kono
parents:
diff changeset
2200 -- have no effect. Note that the initial setting of False is merely to
kono
parents:
diff changeset
2201 -- prevent saving of an undefined value for an initial call to the
kono
parents:
diff changeset
2202 -- Expander_Mode_Save_And_Set procedure. For more information on the use of
kono
parents:
diff changeset
2203 -- this flag, see package Expander. Indeed this flag might more logically
kono
parents:
diff changeset
2204 -- be in the spec of Expander, but it is referenced by Errout, and it
kono
parents:
diff changeset
2205 -- really seems wrong for Errout to depend on Expander.
kono
parents:
diff changeset
2206
kono
parents:
diff changeset
2207 -----------------------
kono
parents:
diff changeset
2208 -- Tree I/O Routines --
kono
parents:
diff changeset
2209 -----------------------
kono
parents:
diff changeset
2210
kono
parents:
diff changeset
2211 procedure Tree_Read;
kono
parents:
diff changeset
2212 -- Reads switch settings from current tree file using Tree_Read
kono
parents:
diff changeset
2213
kono
parents:
diff changeset
2214 procedure Tree_Write;
kono
parents:
diff changeset
2215 -- Writes out switch settings to current tree file using Tree_Write
kono
parents:
diff changeset
2216
kono
parents:
diff changeset
2217 --------------------------
kono
parents:
diff changeset
2218 -- ASIS Version Control --
kono
parents:
diff changeset
2219 --------------------------
kono
parents:
diff changeset
2220
kono
parents:
diff changeset
2221 -- These two variables (Tree_Version_String and Tree_ASIS_Version_Number)
kono
parents:
diff changeset
2222 -- are supposed to be used in the GNAT/ASIS version check performed in
kono
parents:
diff changeset
2223 -- the ASIS code (this package is also a part of the ASIS implementation).
kono
parents:
diff changeset
2224 -- They are set by Tree_Read procedure, so they represent the version
kono
parents:
diff changeset
2225 -- number (and the version string) of the compiler which has created the
kono
parents:
diff changeset
2226 -- tree, and they are supposed to be compared with the corresponding values
kono
parents:
diff changeset
2227 -- from the Tree_IO and Gnatvsn packages which also are a part of ASIS
kono
parents:
diff changeset
2228 -- implementation.
kono
parents:
diff changeset
2229
kono
parents:
diff changeset
2230 Tree_Version_String : String_Access;
kono
parents:
diff changeset
2231 -- Used to store the compiler version string read from a tree file to check
kono
parents:
diff changeset
2232 -- if it is from the same date as stored in the version string in Gnatvsn.
kono
parents:
diff changeset
2233 -- We require that ASIS Pro can be used only with GNAT Pro, but we allow
kono
parents:
diff changeset
2234 -- non-Pro ASIS and ASIS-based tools to be used with any version of the
kono
parents:
diff changeset
2235 -- GNAT compiler. Therefore, we need the possibility to compare the dates
kono
parents:
diff changeset
2236 -- of the corresponding source sets, using version strings that may be
kono
parents:
diff changeset
2237 -- of different lengths.
kono
parents:
diff changeset
2238
kono
parents:
diff changeset
2239 Tree_ASIS_Version_Number : Int;
kono
parents:
diff changeset
2240 -- Used to store the ASIS version number read from a tree file to check if
kono
parents:
diff changeset
2241 -- it is the same as stored in the ASIS version number in Tree_IO.
kono
parents:
diff changeset
2242
kono
parents:
diff changeset
2243 -----------------------------------
kono
parents:
diff changeset
2244 -- Modes for Formal Verification --
kono
parents:
diff changeset
2245 -----------------------------------
kono
parents:
diff changeset
2246
kono
parents:
diff changeset
2247 GNATprove_Mode : Boolean := False;
kono
parents:
diff changeset
2248 -- Specific compiling mode targeting formal verification for those parts
kono
parents:
diff changeset
2249 -- of the input code that belong to the SPARK 2014 subset of Ada. Set True
kono
parents:
diff changeset
2250 -- by the gnat2why executable or by use of the -gnatd.F debug switch. Note
kono
parents:
diff changeset
2251 -- that this is completely separate from the SPARK restriction defined in
kono
parents:
diff changeset
2252 -- GNAT to detect violations of a subset of SPARK 2005 rules.
kono
parents:
diff changeset
2253
kono
parents:
diff changeset
2254 ---------------------------
kono
parents:
diff changeset
2255 -- Error/Warning Control --
kono
parents:
diff changeset
2256 ---------------------------
kono
parents:
diff changeset
2257
kono
parents:
diff changeset
2258 -- The following array would more reasonably be located in Err_Vars or
kono
parents:
diff changeset
2259 -- Errour, but we put them here to deal with licensing issues (we need
kono
parents:
diff changeset
2260 -- this to have the GPL exception licensing, since these variables and
kono
parents:
diff changeset
2261 -- subprograms are accessed from units with this licensing).
kono
parents:
diff changeset
2262
kono
parents:
diff changeset
2263 Warnings_As_Errors : array (1 .. 10_000) of String_Ptr;
kono
parents:
diff changeset
2264 -- Table for recording Warning_As_Error pragmas as they are processed.
kono
parents:
diff changeset
2265 -- It would be nicer to use Table, but there are circular elaboration
kono
parents:
diff changeset
2266 -- problems if we try to do this, and an attempt to find some other
kono
parents:
diff changeset
2267 -- appropriately licensed unit to declare this as a Table failed with
kono
parents:
diff changeset
2268 -- various elaboration circularities. Memory is getting cheap these days!
kono
parents:
diff changeset
2269
kono
parents:
diff changeset
2270 ---------------
kono
parents:
diff changeset
2271 -- GNAT_Mode --
kono
parents:
diff changeset
2272 ---------------
kono
parents:
diff changeset
2273
kono
parents:
diff changeset
2274 GNAT_Mode : Boolean := False;
kono
parents:
diff changeset
2275 -- GNAT
kono
parents:
diff changeset
2276 -- True if compiling in GNAT system mode (-gnatg switch)
kono
parents:
diff changeset
2277
kono
parents:
diff changeset
2278 GNAT_Mode_Config : Boolean := False;
kono
parents:
diff changeset
2279 -- GNAT
kono
parents:
diff changeset
2280 -- True if -gnatg switch is present. GNAT_Mode may be temporary set to
kono
parents:
diff changeset
2281 -- True during the analysis of a system unit, but GNAT_Mode_Config must
kono
parents:
diff changeset
2282 -- not change once scanned and set.
kono
parents:
diff changeset
2283
kono
parents:
diff changeset
2284 -- Setting GNAT mode has the following effects on the language that is
kono
parents:
diff changeset
2285 -- accepted. Note that several of the following have the effect of changing
kono
parents:
diff changeset
2286 -- an error to a warning. But warnings are usually treated as fatal errors
kono
parents:
diff changeset
2287 -- in -gnatg mode, so to actually take advantage of such a change, it is
kono
parents:
diff changeset
2288 -- necessary to add an explicit pragma Warnings (Off) in the source and
kono
parents:
diff changeset
2289 -- this requires clear documentation of why this is necessary.
kono
parents:
diff changeset
2290
kono
parents:
diff changeset
2291 -- The identifier character set is set to 'n' (7-bit ASCII)
kono
parents:
diff changeset
2292
kono
parents:
diff changeset
2293 -- Pragma Extend_System is ignored
kono
parents:
diff changeset
2294
kono
parents:
diff changeset
2295 -- Warning_Mode is set to Treat_As_Error (-gnatwe)
kono
parents:
diff changeset
2296
kono
parents:
diff changeset
2297 -- Standard style checks are set (See Set_GNAT_Style_Check_Options)
kono
parents:
diff changeset
2298
kono
parents:
diff changeset
2299 -- Standard warnings are turned on (see Set_GNAT_Mode_Warnings)
kono
parents:
diff changeset
2300
kono
parents:
diff changeset
2301 -- The Ada version is set to Ada 2012
kono
parents:
diff changeset
2302
kono
parents:
diff changeset
2303 -- Task priorities are always allowed to be in the range Any_Priority
kono
parents:
diff changeset
2304
kono
parents:
diff changeset
2305 -- Overflow checks are suppressed, overflow checking set to strict mode
kono
parents:
diff changeset
2306
kono
parents:
diff changeset
2307 -- ALI files are always generated for predefined generic packages
kono
parents:
diff changeset
2308
kono
parents:
diff changeset
2309 -- Obsolescent feature warnings are suppressed
kono
parents:
diff changeset
2310
kono
parents:
diff changeset
2311 -- Recompilation of children of GNAT, System, Ada, Interfaces is allowed
kono
parents:
diff changeset
2312
kono
parents:
diff changeset
2313 -- The Scalar_Storage_Order attribute applies to generic types
kono
parents:
diff changeset
2314
kono
parents:
diff changeset
2315 -- Categorization errors are treated as warnings rather than errors
kono
parents:
diff changeset
2316
kono
parents:
diff changeset
2317 -- Statements in preelaborated units give warnings rather than errors
kono
parents:
diff changeset
2318
kono
parents:
diff changeset
2319 -- Private objects are allowed in preelaborated units
kono
parents:
diff changeset
2320
kono
parents:
diff changeset
2321 -- Non-static constants in preelaborated units give warnings not errors
kono
parents:
diff changeset
2322
kono
parents:
diff changeset
2323 -- The warning about component size being ignored is suppressed
kono
parents:
diff changeset
2324
kono
parents:
diff changeset
2325 -- The warning about size clauses being ignored is suppressed
kono
parents:
diff changeset
2326
kono
parents:
diff changeset
2327 -- Initializing limited types gives a warning rather than an error
kono
parents:
diff changeset
2328
kono
parents:
diff changeset
2329 -- Copying of limited objects is allowed
kono
parents:
diff changeset
2330
kono
parents:
diff changeset
2331 -- Returning objects of limited types is allowed
kono
parents:
diff changeset
2332
kono
parents:
diff changeset
2333 -- Non-static call in preelaborated unit give a warning, not an error
kono
parents:
diff changeset
2334
kono
parents:
diff changeset
2335 -- Warnings on possible elaboration errors are suppressed
kono
parents:
diff changeset
2336
kono
parents:
diff changeset
2337 -- Warnings about packing being ignored are suppressed
kono
parents:
diff changeset
2338
kono
parents:
diff changeset
2339 -- Warnings in internal units are not suppressed (they normally are)
kono
parents:
diff changeset
2340
kono
parents:
diff changeset
2341 -- The only special comment sequence allowed is --!
kono
parents:
diff changeset
2342
kono
parents:
diff changeset
2343 --------------------------
kono
parents:
diff changeset
2344 -- Private Declarations --
kono
parents:
diff changeset
2345 --------------------------
kono
parents:
diff changeset
2346
kono
parents:
diff changeset
2347 private
kono
parents:
diff changeset
2348 -- The following type is used to save and restore settings of switches in
kono
parents:
diff changeset
2349 -- Opt that represent the configuration (i.e. result of config pragmas).
kono
parents:
diff changeset
2350
kono
parents:
diff changeset
2351 -- Note that Ada_Version_Explicit is not included, since this is a sticky
kono
parents:
diff changeset
2352 -- flag that once set does not get reset, since the whole idea of this flag
kono
parents:
diff changeset
2353 -- is to record the setting for the main unit.
kono
parents:
diff changeset
2354
kono
parents:
diff changeset
2355 type Config_Switches_Type is record
kono
parents:
diff changeset
2356 Ada_Version : Ada_Version_Type;
kono
parents:
diff changeset
2357 Ada_Version_Explicit : Ada_Version_Type;
kono
parents:
diff changeset
2358 Ada_Version_Pragma : Node_Id;
kono
parents:
diff changeset
2359 Assertions_Enabled : Boolean;
kono
parents:
diff changeset
2360 Assume_No_Invalid_Values : Boolean;
kono
parents:
diff changeset
2361 Check_Float_Overflow : Boolean;
kono
parents:
diff changeset
2362 Check_Policy_List : Node_Id;
kono
parents:
diff changeset
2363 Default_Pool : Node_Id;
kono
parents:
diff changeset
2364 Default_SSO : Character;
kono
parents:
diff changeset
2365 Dynamic_Elaboration_Checks : Boolean;
kono
parents:
diff changeset
2366 Exception_Locations_Suppressed : Boolean;
kono
parents:
diff changeset
2367 Extensions_Allowed : Boolean;
kono
parents:
diff changeset
2368 External_Name_Exp_Casing : External_Casing_Type;
kono
parents:
diff changeset
2369 External_Name_Imp_Casing : External_Casing_Type;
kono
parents:
diff changeset
2370 Fast_Math : Boolean;
kono
parents:
diff changeset
2371 Initialize_Scalars : Boolean;
kono
parents:
diff changeset
2372 No_Component_Reordering : Boolean;
kono
parents:
diff changeset
2373 Normalize_Scalars : Boolean;
kono
parents:
diff changeset
2374 Optimize_Alignment : Character;
kono
parents:
diff changeset
2375 Optimize_Alignment_Local : Boolean;
kono
parents:
diff changeset
2376 Persistent_BSS_Mode : Boolean;
kono
parents:
diff changeset
2377 Polling_Required : Boolean;
kono
parents:
diff changeset
2378 Prefix_Exception_Messages : Boolean;
kono
parents:
diff changeset
2379 SPARK_Mode : SPARK_Mode_Type;
kono
parents:
diff changeset
2380 SPARK_Mode_Pragma : Node_Id;
kono
parents:
diff changeset
2381 Uneval_Old : Character;
kono
parents:
diff changeset
2382 Use_VADS_Size : Boolean;
kono
parents:
diff changeset
2383 Warnings_As_Errors_Count : Natural;
kono
parents:
diff changeset
2384 end record;
kono
parents:
diff changeset
2385
kono
parents:
diff changeset
2386 -- The following declarations are for GCC version dependent flags. We do
kono
parents:
diff changeset
2387 -- not let client code in the compiler test GCC_Version directly, but
kono
parents:
diff changeset
2388 -- instead use deferred constants for relevant feature tags.
kono
parents:
diff changeset
2389
kono
parents:
diff changeset
2390 -- Note: there currently are no such constants defined in this section,
kono
parents:
diff changeset
2391 -- since the compiler front end is currently entirely independent of the
kono
parents:
diff changeset
2392 -- GCC version, which is a desirable state of affairs.
kono
parents:
diff changeset
2393
kono
parents:
diff changeset
2394 function get_gcc_version return Int;
kono
parents:
diff changeset
2395 pragma Import (C, get_gcc_version, "get_gcc_version");
kono
parents:
diff changeset
2396
kono
parents:
diff changeset
2397 GCC_Version : constant Nat := get_gcc_version;
kono
parents:
diff changeset
2398 -- GNATMAKE
kono
parents:
diff changeset
2399 -- Indicates which version of gcc is in use (3 = 3.x, 4 = 4.x). Note that
kono
parents:
diff changeset
2400 -- gcc 2.8.1 (which used to be a value of 2) is no longer supported.
kono
parents:
diff changeset
2401
kono
parents:
diff changeset
2402 end Opt;