annotate gcc/ada/opt.adb @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
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 -- B o d y --
kono
parents:
diff changeset
8 -- --
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
9 -- Copyright (C) 1992-2019, 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 with Gnatvsn; use Gnatvsn;
kono
parents:
diff changeset
33 with System; use System;
kono
parents:
diff changeset
34 with Tree_IO; use Tree_IO;
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 package body Opt is
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 SU : constant := Storage_Unit;
kono
parents:
diff changeset
39 -- Shorthand for System.Storage_Unit
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 -------------------------
kono
parents:
diff changeset
42 -- Back_End_Exceptions --
kono
parents:
diff changeset
43 -------------------------
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 function Back_End_Exceptions return Boolean is
kono
parents:
diff changeset
46 begin
kono
parents:
diff changeset
47 return
kono
parents:
diff changeset
48 Exception_Mechanism = Back_End_SJLJ
kono
parents:
diff changeset
49 or else
kono
parents:
diff changeset
50 Exception_Mechanism = Back_End_ZCX;
kono
parents:
diff changeset
51 end Back_End_Exceptions;
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 -------------------------
kono
parents:
diff changeset
54 -- Front_End_Exceptions --
kono
parents:
diff changeset
55 -------------------------
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 function Front_End_Exceptions return Boolean is
kono
parents:
diff changeset
58 begin
kono
parents:
diff changeset
59 return Exception_Mechanism = Front_End_SJLJ;
kono
parents:
diff changeset
60 end Front_End_Exceptions;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 --------------------
kono
parents:
diff changeset
63 -- SJLJ_Exceptions --
kono
parents:
diff changeset
64 --------------------
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 function SJLJ_Exceptions return Boolean is
kono
parents:
diff changeset
67 begin
kono
parents:
diff changeset
68 return
kono
parents:
diff changeset
69 Exception_Mechanism = Back_End_SJLJ
kono
parents:
diff changeset
70 or else
kono
parents:
diff changeset
71 Exception_Mechanism = Front_End_SJLJ;
kono
parents:
diff changeset
72 end SJLJ_Exceptions;
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 --------------------
kono
parents:
diff changeset
75 -- ZCX_Exceptions --
kono
parents:
diff changeset
76 --------------------
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 function ZCX_Exceptions return Boolean is
kono
parents:
diff changeset
79 begin
kono
parents:
diff changeset
80 return Exception_Mechanism = Back_End_ZCX;
kono
parents:
diff changeset
81 end ZCX_Exceptions;
kono
parents:
diff changeset
82
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
83 ------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
84 -- Register_Config_Switches --
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
85 ------------------------------
111
kono
parents:
diff changeset
86
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
87 procedure Register_Config_Switches is
111
kono
parents:
diff changeset
88 begin
kono
parents:
diff changeset
89 Ada_Version_Config := Ada_Version;
kono
parents:
diff changeset
90 Ada_Version_Pragma_Config := Ada_Version_Pragma;
kono
parents:
diff changeset
91 Ada_Version_Explicit_Config := Ada_Version_Explicit;
kono
parents:
diff changeset
92 Assertions_Enabled_Config := Assertions_Enabled;
kono
parents:
diff changeset
93 Assume_No_Invalid_Values_Config := Assume_No_Invalid_Values;
kono
parents:
diff changeset
94 Check_Float_Overflow_Config := Check_Float_Overflow;
kono
parents:
diff changeset
95 Check_Policy_List_Config := Check_Policy_List;
kono
parents:
diff changeset
96 Default_Pool_Config := Default_Pool;
kono
parents:
diff changeset
97 Default_SSO_Config := Default_SSO;
kono
parents:
diff changeset
98 Dynamic_Elaboration_Checks_Config := Dynamic_Elaboration_Checks;
kono
parents:
diff changeset
99 Exception_Locations_Suppressed_Config := Exception_Locations_Suppressed;
kono
parents:
diff changeset
100 Extensions_Allowed_Config := Extensions_Allowed;
kono
parents:
diff changeset
101 External_Name_Exp_Casing_Config := External_Name_Exp_Casing;
kono
parents:
diff changeset
102 External_Name_Imp_Casing_Config := External_Name_Imp_Casing;
kono
parents:
diff changeset
103 Fast_Math_Config := Fast_Math;
kono
parents:
diff changeset
104 Initialize_Scalars_Config := Initialize_Scalars;
kono
parents:
diff changeset
105 No_Component_Reordering_Config := No_Component_Reordering;
kono
parents:
diff changeset
106 Optimize_Alignment_Config := Optimize_Alignment;
kono
parents:
diff changeset
107 Persistent_BSS_Mode_Config := Persistent_BSS_Mode;
kono
parents:
diff changeset
108 Polling_Required_Config := Polling_Required;
kono
parents:
diff changeset
109 Prefix_Exception_Messages_Config := Prefix_Exception_Messages;
kono
parents:
diff changeset
110 SPARK_Mode_Config := SPARK_Mode;
kono
parents:
diff changeset
111 SPARK_Mode_Pragma_Config := SPARK_Mode_Pragma;
kono
parents:
diff changeset
112 Uneval_Old_Config := Uneval_Old;
kono
parents:
diff changeset
113 Use_VADS_Size_Config := Use_VADS_Size;
kono
parents:
diff changeset
114 Warnings_As_Errors_Count_Config := Warnings_As_Errors_Count;
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 -- Reset the indication that Optimize_Alignment was set locally, since
kono
parents:
diff changeset
117 -- if we had a pragma in the config file, it would set this flag True,
kono
parents:
diff changeset
118 -- but that's not a local setting.
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 Optimize_Alignment_Local := False;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
121 end Register_Config_Switches;
111
kono
parents:
diff changeset
122
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
123 -----------------------------
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
124 -- Restore_Config_Switches --
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
125 -----------------------------
111
kono
parents:
diff changeset
126
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
127 procedure Restore_Config_Switches (Save : Config_Switches_Type) is
111
kono
parents:
diff changeset
128 begin
kono
parents:
diff changeset
129 Ada_Version := Save.Ada_Version;
kono
parents:
diff changeset
130 Ada_Version_Pragma := Save.Ada_Version_Pragma;
kono
parents:
diff changeset
131 Ada_Version_Explicit := Save.Ada_Version_Explicit;
kono
parents:
diff changeset
132 Assertions_Enabled := Save.Assertions_Enabled;
kono
parents:
diff changeset
133 Assume_No_Invalid_Values := Save.Assume_No_Invalid_Values;
kono
parents:
diff changeset
134 Check_Float_Overflow := Save.Check_Float_Overflow;
kono
parents:
diff changeset
135 Check_Policy_List := Save.Check_Policy_List;
kono
parents:
diff changeset
136 Default_Pool := Save.Default_Pool;
kono
parents:
diff changeset
137 Default_SSO := Save.Default_SSO;
kono
parents:
diff changeset
138 Dynamic_Elaboration_Checks := Save.Dynamic_Elaboration_Checks;
kono
parents:
diff changeset
139 Exception_Locations_Suppressed := Save.Exception_Locations_Suppressed;
kono
parents:
diff changeset
140 Extensions_Allowed := Save.Extensions_Allowed;
kono
parents:
diff changeset
141 External_Name_Exp_Casing := Save.External_Name_Exp_Casing;
kono
parents:
diff changeset
142 External_Name_Imp_Casing := Save.External_Name_Imp_Casing;
kono
parents:
diff changeset
143 Fast_Math := Save.Fast_Math;
kono
parents:
diff changeset
144 Initialize_Scalars := Save.Initialize_Scalars;
kono
parents:
diff changeset
145 No_Component_Reordering := Save.No_Component_Reordering;
kono
parents:
diff changeset
146 Optimize_Alignment := Save.Optimize_Alignment;
kono
parents:
diff changeset
147 Optimize_Alignment_Local := Save.Optimize_Alignment_Local;
kono
parents:
diff changeset
148 Persistent_BSS_Mode := Save.Persistent_BSS_Mode;
kono
parents:
diff changeset
149 Polling_Required := Save.Polling_Required;
kono
parents:
diff changeset
150 Prefix_Exception_Messages := Save.Prefix_Exception_Messages;
kono
parents:
diff changeset
151 SPARK_Mode := Save.SPARK_Mode;
kono
parents:
diff changeset
152 SPARK_Mode_Pragma := Save.SPARK_Mode_Pragma;
kono
parents:
diff changeset
153 Uneval_Old := Save.Uneval_Old;
kono
parents:
diff changeset
154 Use_VADS_Size := Save.Use_VADS_Size;
kono
parents:
diff changeset
155 Warnings_As_Errors_Count := Save.Warnings_As_Errors_Count;
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 -- Update consistently the value of Init_Or_Norm_Scalars. The value of
kono
parents:
diff changeset
158 -- Normalize_Scalars is not saved/restored because after set to True its
kono
parents:
diff changeset
159 -- value is never changed. That is, if a compilation unit has pragma
kono
parents:
diff changeset
160 -- Normalize_Scalars then it forces that value for all with'ed units.
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162 Init_Or_Norm_Scalars := Initialize_Scalars or Normalize_Scalars;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
163 end Restore_Config_Switches;
111
kono
parents:
diff changeset
164
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
165 --------------------------
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
166 -- Save_Config_Switches --
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
167 --------------------------
111
kono
parents:
diff changeset
168
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
169 function Save_Config_Switches return Config_Switches_Type is
111
kono
parents:
diff changeset
170 begin
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
171 return
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
172 (Ada_Version => Ada_Version,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
173 Ada_Version_Pragma => Ada_Version_Pragma,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
174 Ada_Version_Explicit => Ada_Version_Explicit,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
175 Assertions_Enabled => Assertions_Enabled,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
176 Assume_No_Invalid_Values => Assume_No_Invalid_Values,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
177 Check_Float_Overflow => Check_Float_Overflow,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
178 Check_Policy_List => Check_Policy_List,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
179 Default_Pool => Default_Pool,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
180 Default_SSO => Default_SSO,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
181 Dynamic_Elaboration_Checks => Dynamic_Elaboration_Checks,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
182 Exception_Locations_Suppressed => Exception_Locations_Suppressed,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
183 Extensions_Allowed => Extensions_Allowed,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
184 External_Name_Exp_Casing => External_Name_Exp_Casing,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
185 External_Name_Imp_Casing => External_Name_Imp_Casing,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
186 Fast_Math => Fast_Math,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
187 Initialize_Scalars => Initialize_Scalars,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
188 No_Component_Reordering => No_Component_Reordering,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
189 Normalize_Scalars => Normalize_Scalars,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
190 Optimize_Alignment => Optimize_Alignment,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
191 Optimize_Alignment_Local => Optimize_Alignment_Local,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
192 Persistent_BSS_Mode => Persistent_BSS_Mode,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
193 Polling_Required => Polling_Required,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
194 Prefix_Exception_Messages => Prefix_Exception_Messages,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
195 SPARK_Mode => SPARK_Mode,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
196 SPARK_Mode_Pragma => SPARK_Mode_Pragma,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
197 Uneval_Old => Uneval_Old,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
198 Use_VADS_Size => Use_VADS_Size,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
199 Warnings_As_Errors_Count => Warnings_As_Errors_Count);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
200 end Save_Config_Switches;
111
kono
parents:
diff changeset
201
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
202 -------------------------
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
203 -- Set_Config_Switches --
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
204 -------------------------
111
kono
parents:
diff changeset
205
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
206 procedure Set_Config_Switches
111
kono
parents:
diff changeset
207 (Internal_Unit : Boolean;
kono
parents:
diff changeset
208 Main_Unit : Boolean)
kono
parents:
diff changeset
209 is
kono
parents:
diff changeset
210 begin
kono
parents:
diff changeset
211 -- Case of internal unit
kono
parents:
diff changeset
212
kono
parents:
diff changeset
213 if Internal_Unit then
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 -- Set standard switches. Note we do NOT set Ada_Version_Explicit
kono
parents:
diff changeset
216 -- since the whole point of this is that it still properly indicates
kono
parents:
diff changeset
217 -- the configuration setting even in a run time unit.
kono
parents:
diff changeset
218
kono
parents:
diff changeset
219 Ada_Version := Ada_Version_Runtime;
kono
parents:
diff changeset
220 Ada_Version_Pragma := Empty;
kono
parents:
diff changeset
221 Default_SSO := ' ';
kono
parents:
diff changeset
222 Dynamic_Elaboration_Checks := False;
kono
parents:
diff changeset
223 Extensions_Allowed := True;
kono
parents:
diff changeset
224 External_Name_Exp_Casing := As_Is;
kono
parents:
diff changeset
225 External_Name_Imp_Casing := Lowercase;
kono
parents:
diff changeset
226 No_Component_Reordering := False;
kono
parents:
diff changeset
227 Optimize_Alignment := 'O';
kono
parents:
diff changeset
228 Optimize_Alignment_Local := True;
kono
parents:
diff changeset
229 Persistent_BSS_Mode := False;
kono
parents:
diff changeset
230 Prefix_Exception_Messages := True;
kono
parents:
diff changeset
231 Uneval_Old := 'E';
kono
parents:
diff changeset
232 Use_VADS_Size := False;
kono
parents:
diff changeset
233
kono
parents:
diff changeset
234 -- Note: we do not need to worry about Warnings_As_Errors_Count since
kono
parents:
diff changeset
235 -- we do not expect to get any warnings from compiling such a unit.
kono
parents:
diff changeset
236
kono
parents:
diff changeset
237 -- For an internal unit, assertions/debug pragmas are off unless this
kono
parents:
diff changeset
238 -- is the main unit and they were explicitly enabled, or unless the
kono
parents:
diff changeset
239 -- main unit was compiled in GNAT mode. We also make sure we do not
kono
parents:
diff changeset
240 -- assume that values are necessarily valid and that SPARK_Mode is
kono
parents:
diff changeset
241 -- set to its configuration value.
kono
parents:
diff changeset
242
kono
parents:
diff changeset
243 if Main_Unit then
kono
parents:
diff changeset
244 Assertions_Enabled := Assertions_Enabled_Config;
kono
parents:
diff changeset
245 Assume_No_Invalid_Values := Assume_No_Invalid_Values_Config;
kono
parents:
diff changeset
246 Check_Policy_List := Check_Policy_List_Config;
kono
parents:
diff changeset
247 SPARK_Mode := SPARK_Mode_Config;
kono
parents:
diff changeset
248 SPARK_Mode_Pragma := SPARK_Mode_Pragma_Config;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
249
111
kono
parents:
diff changeset
250 else
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
251 -- In GNATprove mode assertions should be always enabled, even
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
252 -- when analysing internal units.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
253
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
254 if GNATprove_Mode then
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
255 pragma Assert (Assertions_Enabled);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
256 null;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
257
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
258 elsif GNAT_Mode_Config then
111
kono
parents:
diff changeset
259 Assertions_Enabled := Assertions_Enabled_Config;
kono
parents:
diff changeset
260 else
kono
parents:
diff changeset
261 Assertions_Enabled := False;
kono
parents:
diff changeset
262 end if;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
263
111
kono
parents:
diff changeset
264 Assume_No_Invalid_Values := False;
kono
parents:
diff changeset
265 Check_Policy_List := Empty;
kono
parents:
diff changeset
266 SPARK_Mode := None;
kono
parents:
diff changeset
267 SPARK_Mode_Pragma := Empty;
kono
parents:
diff changeset
268 end if;
kono
parents:
diff changeset
269
kono
parents:
diff changeset
270 -- Case of non-internal unit
kono
parents:
diff changeset
271
kono
parents:
diff changeset
272 else
kono
parents:
diff changeset
273 Ada_Version := Ada_Version_Config;
kono
parents:
diff changeset
274 Ada_Version_Pragma := Ada_Version_Pragma_Config;
kono
parents:
diff changeset
275 Ada_Version_Explicit := Ada_Version_Explicit_Config;
kono
parents:
diff changeset
276 Assertions_Enabled := Assertions_Enabled_Config;
kono
parents:
diff changeset
277 Assume_No_Invalid_Values := Assume_No_Invalid_Values_Config;
kono
parents:
diff changeset
278 Check_Float_Overflow := Check_Float_Overflow_Config;
kono
parents:
diff changeset
279 Check_Policy_List := Check_Policy_List_Config;
kono
parents:
diff changeset
280 Default_SSO := Default_SSO_Config;
kono
parents:
diff changeset
281 Dynamic_Elaboration_Checks := Dynamic_Elaboration_Checks_Config;
kono
parents:
diff changeset
282 Extensions_Allowed := Extensions_Allowed_Config;
kono
parents:
diff changeset
283 External_Name_Exp_Casing := External_Name_Exp_Casing_Config;
kono
parents:
diff changeset
284 External_Name_Imp_Casing := External_Name_Imp_Casing_Config;
kono
parents:
diff changeset
285 Fast_Math := Fast_Math_Config;
kono
parents:
diff changeset
286 Initialize_Scalars := Initialize_Scalars_Config;
kono
parents:
diff changeset
287 No_Component_Reordering := No_Component_Reordering_Config;
kono
parents:
diff changeset
288 Optimize_Alignment := Optimize_Alignment_Config;
kono
parents:
diff changeset
289 Optimize_Alignment_Local := False;
kono
parents:
diff changeset
290 Persistent_BSS_Mode := Persistent_BSS_Mode_Config;
kono
parents:
diff changeset
291 Prefix_Exception_Messages := Prefix_Exception_Messages_Config;
kono
parents:
diff changeset
292 SPARK_Mode := SPARK_Mode_Config;
kono
parents:
diff changeset
293 SPARK_Mode_Pragma := SPARK_Mode_Pragma_Config;
kono
parents:
diff changeset
294 Uneval_Old := Uneval_Old_Config;
kono
parents:
diff changeset
295 Use_VADS_Size := Use_VADS_Size_Config;
kono
parents:
diff changeset
296 Warnings_As_Errors_Count := Warnings_As_Errors_Count_Config;
kono
parents:
diff changeset
297
kono
parents:
diff changeset
298 -- Update consistently the value of Init_Or_Norm_Scalars. The value
kono
parents:
diff changeset
299 -- of Normalize_Scalars is not saved/restored because once set to
kono
parents:
diff changeset
300 -- True its value is never changed. That is, if a compilation unit
kono
parents:
diff changeset
301 -- has pragma Normalize_Scalars then it forces that value for all
kono
parents:
diff changeset
302 -- with'ed units.
kono
parents:
diff changeset
303
kono
parents:
diff changeset
304 Init_Or_Norm_Scalars := Initialize_Scalars or Normalize_Scalars;
kono
parents:
diff changeset
305 end if;
kono
parents:
diff changeset
306
kono
parents:
diff changeset
307 -- Values set for all units
kono
parents:
diff changeset
308
kono
parents:
diff changeset
309 Default_Pool := Default_Pool_Config;
kono
parents:
diff changeset
310 Exception_Locations_Suppressed := Exception_Locations_Suppressed_Config;
kono
parents:
diff changeset
311 Fast_Math := Fast_Math_Config;
kono
parents:
diff changeset
312 Polling_Required := Polling_Required_Config;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
313 end Set_Config_Switches;
111
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 ---------------
kono
parents:
diff changeset
316 -- Tree_Read --
kono
parents:
diff changeset
317 ---------------
kono
parents:
diff changeset
318
kono
parents:
diff changeset
319 procedure Tree_Read is
kono
parents:
diff changeset
320 Tree_Version_String_Len : Nat;
kono
parents:
diff changeset
321 Ada_Version_Config_Val : Nat;
kono
parents:
diff changeset
322 Ada_Version_Explicit_Config_Val : Nat;
kono
parents:
diff changeset
323 Assertions_Enabled_Config_Val : Nat;
kono
parents:
diff changeset
324
kono
parents:
diff changeset
325 begin
kono
parents:
diff changeset
326 Tree_Read_Int (Tree_ASIS_Version_Number);
kono
parents:
diff changeset
327
kono
parents:
diff changeset
328 Tree_Read_Bool (Address_Is_Private);
kono
parents:
diff changeset
329 Tree_Read_Bool (Brief_Output);
kono
parents:
diff changeset
330 Tree_Read_Bool (GNAT_Mode);
kono
parents:
diff changeset
331 Tree_Read_Char (Identifier_Character_Set);
kono
parents:
diff changeset
332 Tree_Read_Bool (Ignore_Rep_Clauses);
kono
parents:
diff changeset
333 Tree_Read_Bool (Ignore_Style_Checks_Pragmas);
kono
parents:
diff changeset
334 Tree_Read_Int (Maximum_File_Name_Length);
kono
parents:
diff changeset
335 Tree_Read_Data (Suppress_Options'Address,
kono
parents:
diff changeset
336 (Suppress_Options'Size + SU - 1) / SU);
kono
parents:
diff changeset
337 Tree_Read_Bool (Verbose_Mode);
kono
parents:
diff changeset
338 Tree_Read_Data (Warning_Mode'Address,
kono
parents:
diff changeset
339 (Warning_Mode'Size + SU - 1) / SU);
kono
parents:
diff changeset
340 Tree_Read_Int (Ada_Version_Config_Val);
kono
parents:
diff changeset
341 Tree_Read_Int (Ada_Version_Explicit_Config_Val);
kono
parents:
diff changeset
342 Tree_Read_Int (Assertions_Enabled_Config_Val);
kono
parents:
diff changeset
343 Tree_Read_Bool (All_Errors_Mode);
kono
parents:
diff changeset
344 Tree_Read_Bool (Assertions_Enabled);
kono
parents:
diff changeset
345 Tree_Read_Bool (Check_Float_Overflow);
kono
parents:
diff changeset
346 Tree_Read_Int (Int (Check_Policy_List));
kono
parents:
diff changeset
347 Tree_Read_Int (Int (Default_Pool));
kono
parents:
diff changeset
348 Tree_Read_Bool (Full_List);
kono
parents:
diff changeset
349
kono
parents:
diff changeset
350 Ada_Version_Config :=
kono
parents:
diff changeset
351 Ada_Version_Type'Val (Ada_Version_Config_Val);
kono
parents:
diff changeset
352 Ada_Version_Explicit_Config :=
kono
parents:
diff changeset
353 Ada_Version_Type'Val (Ada_Version_Explicit_Config_Val);
kono
parents:
diff changeset
354 Assertions_Enabled_Config :=
kono
parents:
diff changeset
355 Boolean'Val (Assertions_Enabled_Config_Val);
kono
parents:
diff changeset
356
kono
parents:
diff changeset
357 -- Read version string: we have to get the length first
kono
parents:
diff changeset
358
kono
parents:
diff changeset
359 Tree_Read_Int (Tree_Version_String_Len);
kono
parents:
diff changeset
360
kono
parents:
diff changeset
361 declare
kono
parents:
diff changeset
362 Tmp : String (1 .. Integer (Tree_Version_String_Len));
kono
parents:
diff changeset
363 begin
kono
parents:
diff changeset
364 Tree_Read_Data
kono
parents:
diff changeset
365 (Tmp'Address, Tree_Version_String_Len);
kono
parents:
diff changeset
366 System.Strings.Free (Tree_Version_String);
kono
parents:
diff changeset
367 Free (Tree_Version_String);
kono
parents:
diff changeset
368 Tree_Version_String := new String'(Tmp);
kono
parents:
diff changeset
369 end;
kono
parents:
diff changeset
370
kono
parents:
diff changeset
371 Tree_Read_Data (Distribution_Stub_Mode'Address,
kono
parents:
diff changeset
372 (Distribution_Stub_Mode'Size + SU - 1) / Storage_Unit);
kono
parents:
diff changeset
373 Tree_Read_Bool (Inline_Active);
kono
parents:
diff changeset
374 Tree_Read_Bool (Inline_Processing_Required);
kono
parents:
diff changeset
375 Tree_Read_Bool (List_Units);
kono
parents:
diff changeset
376 Tree_Read_Int (Multiple_Unit_Index);
kono
parents:
diff changeset
377 Tree_Read_Bool (Configurable_Run_Time_Mode);
kono
parents:
diff changeset
378 Tree_Read_Data (Operating_Mode'Address,
kono
parents:
diff changeset
379 (Operating_Mode'Size + SU - 1) / Storage_Unit);
kono
parents:
diff changeset
380 Tree_Read_Bool (Suppress_Checks);
kono
parents:
diff changeset
381 Tree_Read_Bool (Try_Semantics);
kono
parents:
diff changeset
382 Tree_Read_Data (Wide_Character_Encoding_Method'Address,
kono
parents:
diff changeset
383 (Wide_Character_Encoding_Method'Size + SU - 1) / SU);
kono
parents:
diff changeset
384 Tree_Read_Bool (Upper_Half_Encoding);
kono
parents:
diff changeset
385 Tree_Read_Bool (Force_ALI_Tree_File);
kono
parents:
diff changeset
386 end Tree_Read;
kono
parents:
diff changeset
387
kono
parents:
diff changeset
388 ----------------
kono
parents:
diff changeset
389 -- Tree_Write --
kono
parents:
diff changeset
390 ----------------
kono
parents:
diff changeset
391
kono
parents:
diff changeset
392 procedure Tree_Write is
kono
parents:
diff changeset
393 Version_String : String := Gnat_Version_String;
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 begin
kono
parents:
diff changeset
396 Tree_Write_Int (ASIS_Version_Number);
kono
parents:
diff changeset
397
kono
parents:
diff changeset
398 Tree_Write_Bool (Address_Is_Private);
kono
parents:
diff changeset
399 Tree_Write_Bool (Brief_Output);
kono
parents:
diff changeset
400 Tree_Write_Bool (GNAT_Mode);
kono
parents:
diff changeset
401 Tree_Write_Char (Identifier_Character_Set);
kono
parents:
diff changeset
402 Tree_Write_Bool (Ignore_Rep_Clauses);
kono
parents:
diff changeset
403 Tree_Write_Bool (Ignore_Style_Checks_Pragmas);
kono
parents:
diff changeset
404 Tree_Write_Int (Maximum_File_Name_Length);
kono
parents:
diff changeset
405 Tree_Write_Data (Suppress_Options'Address,
kono
parents:
diff changeset
406 (Suppress_Options'Size + SU - 1) / SU);
kono
parents:
diff changeset
407 Tree_Write_Bool (Verbose_Mode);
kono
parents:
diff changeset
408 Tree_Write_Data (Warning_Mode'Address,
kono
parents:
diff changeset
409 (Warning_Mode'Size + SU - 1) / Storage_Unit);
kono
parents:
diff changeset
410 Tree_Write_Int (Ada_Version_Type'Pos (Ada_Version_Config));
kono
parents:
diff changeset
411 Tree_Write_Int (Ada_Version_Type'Pos (Ada_Version_Explicit_Config));
kono
parents:
diff changeset
412 Tree_Write_Int (Boolean'Pos (Assertions_Enabled_Config));
kono
parents:
diff changeset
413 Tree_Write_Bool (All_Errors_Mode);
kono
parents:
diff changeset
414 Tree_Write_Bool (Assertions_Enabled);
kono
parents:
diff changeset
415 Tree_Write_Bool (Check_Float_Overflow);
kono
parents:
diff changeset
416 Tree_Write_Int (Int (Check_Policy_List));
kono
parents:
diff changeset
417 Tree_Write_Int (Int (Default_Pool));
kono
parents:
diff changeset
418 Tree_Write_Bool (Full_List);
kono
parents:
diff changeset
419 Tree_Write_Int (Int (Version_String'Length));
kono
parents:
diff changeset
420 Tree_Write_Data (Version_String'Address, Version_String'Length);
kono
parents:
diff changeset
421 Tree_Write_Data (Distribution_Stub_Mode'Address,
kono
parents:
diff changeset
422 (Distribution_Stub_Mode'Size + SU - 1) / SU);
kono
parents:
diff changeset
423 Tree_Write_Bool (Inline_Active);
kono
parents:
diff changeset
424 Tree_Write_Bool (Inline_Processing_Required);
kono
parents:
diff changeset
425 Tree_Write_Bool (List_Units);
kono
parents:
diff changeset
426 Tree_Write_Int (Multiple_Unit_Index);
kono
parents:
diff changeset
427 Tree_Write_Bool (Configurable_Run_Time_Mode);
kono
parents:
diff changeset
428 Tree_Write_Data (Operating_Mode'Address,
kono
parents:
diff changeset
429 (Operating_Mode'Size + SU - 1) / SU);
kono
parents:
diff changeset
430 Tree_Write_Bool (Suppress_Checks);
kono
parents:
diff changeset
431 Tree_Write_Bool (Try_Semantics);
kono
parents:
diff changeset
432 Tree_Write_Data (Wide_Character_Encoding_Method'Address,
kono
parents:
diff changeset
433 (Wide_Character_Encoding_Method'Size + SU - 1) / SU);
kono
parents:
diff changeset
434 Tree_Write_Bool (Upper_Half_Encoding);
kono
parents:
diff changeset
435 Tree_Write_Bool (Force_ALI_Tree_File);
kono
parents:
diff changeset
436 end Tree_Write;
kono
parents:
diff changeset
437
kono
parents:
diff changeset
438 end Opt;