-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2019, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- GPRBUILD
-- Set to True by gprbuild when the version of GNAT is 5.03 or before.
+ Checksum_Accumulate_Limited_Checksum : Boolean := False;
+ -- Used to control the computation of the limited view of a package.
+ -- (Not currently used, possible optimization for ALI files of units
+ -- in limited with_clauses).
+
----------------------------------------------
-- Settings of Modes for Current Processing --
----------------------------------------------
-- case of some binder variables, Gnatbind.Scan_Bind_Arg may modify
-- the default values.
- type Ada_Version_Type is (Ada_83, Ada_95, Ada_2005, Ada_2012);
+ Latest_Ada_Only : Boolean := False;
+ -- If True, the only value valid for Ada_Version is Ada_Version_Type'Last,
+ -- trying to specify other values will be ignored (in case of pragma
+ -- Ada_xxx) or generate an error (in case of -gnat83/95/xx switches).
+
+ type Ada_Version_Type is (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2020);
pragma Ordered (Ada_Version_Type);
-- Versions of Ada for Ada_Version below. Note that these are ordered,
-- so that tests like Ada_Version >= Ada_95 are legitimate and useful.
-- GNAT, GNATBIND
-- Set True if package System has the line "type Address is private;"
+ Aggregate_Individually_Assign : Boolean := False;
+ -- GNAT
+ -- Set True if record aggregates are to be always converted into assignment
+ -- statements. Set through the corresponding pragma.
+
All_Errors_Mode : Boolean := False;
-- GNAT
-- Flag set to force display of multiple errors on a single line and
Alternate_Main_Name : String_Ptr := null;
-- GNATBIND
- -- Set to non null when Bind_Alternate_Main_Name is True. This value
+ -- Set to non-null when Bind_Alternate_Main_Name is True. This value
-- is modified as needed by Gnatbind.Scan_Bind_Arg.
+ ASIS_GNSA_Mode : Boolean := False;
+ -- GNAT
+ -- Enable GNSA back-end processing assuming ASIS_Mode is already set to
+ -- True. ASIS_GNSA mode suppresses the call to gigi.
+
ASIS_Mode : Boolean := False;
-- GNAT
-- Enable semantic checks and tree transformations that are important
Check_Validity_Of_Parameters : Boolean := False;
-- GNAT
-- Set to True to check for proper scalar initialization of subprogram
- -- parameters on both entry and exit. Turned on by??? turned off by???
+ -- parameters on both entry and exit. This is turned on by -gnateV.
Check_Withs : Boolean := False;
-- GNAT
subtype Debug_Level_Value is Nat range 0 .. 3;
Debugger_Level : Debug_Level_Value := 0;
+ -- GNAT, GNATBIND
-- The value given to the -g parameter. The default value for -g with
- -- no value is 2. This is not currently used but is retained for possible
- -- future use.
+ -- no value is 2. If no -g is specified, defaults to 0.
+ -- Note that the generated code should never depend on this variable,
+ -- since we want debug info to be nonintrusive on the generate code.
Default_Exit_Status : Int := 0;
-- GNATBIND
-- otherwise: "pragma Default_Storage_Pool (X);" applies, and
-- this points to the name X.
-- Push_Scope and Pop_Scope in Sem_Ch8 save and restore this value.
- Default_Stack_Size : Int := -1;
+
+ No_Stack_Size : constant := -1;
+
+ Default_Stack_Size : Int := No_Stack_Size;
-- GNATBIND
- -- Set to default primary stack size in units of bytes. Set by
- -- the -dnnn switch for the binder. A value of -1 indicates that no
- -- default was set by the binder.
+ -- Set to default primary stack size in units of bytes. Set by the -dnnn
+ -- switch for the binder. A value of No_Stack_Size indicates that
+ -- no default was set by the binder.
- Default_Sec_Stack_Size : Int := -1;
+ Default_Sec_Stack_Size : Int := No_Stack_Size;
-- GNATBIND
- -- Set to default secondary stack size in units of bytes. Set by
- -- the -Dnnn switch for the binder. A value of -1 indicates that no
- -- default was set by the binder, and that the default should be the
- -- initial value of System.Secondary_Stack.Default_Secondary_Stack_Size.
+ -- Set to default secondary stack size in units of bytes. Set by the -Dnnn
+ -- switch for the binder. A value of No_Stack_Size indicates that no
+ -- default was set by the binder and the run-time value should be used
+ -- instead.
Default_SSO : Character := ' ';
-- GNAT
type Distribution_Stub_Mode_Type is
-- GNAT
(No_Stubs,
- -- Normal mode, no generation/compilation of distribution stubs
+ -- Normal mode, no generation of distribution stubs
Generate_Receiver_Stub_Body,
-- The unit being compiled is the RCI body, and the compiler will
Distribution_Stub_Mode : Distribution_Stub_Mode_Type := No_Stubs;
-- GNAT
- -- This enumeration variable indicates the five states of distribution
- -- annex stub generation/compilation.
+ -- This enumeration variable indicates the three states of distribution
+ -- annex stub generation.
Do_Not_Execute : Boolean := False;
-- GNATMAKE
-- GNAT
-- Set to True to output info messages for static elabmodel (-gnatel)
- Elab_Warnings : Boolean := False;
+ Elab_Warnings : Boolean := True;
-- GNAT
- -- Set to True to generate elaboration warnings (-gnatwl)
+ -- Set to True to generate elaboration warnings (-gnatwl). The warnings are
+ -- enabled by default because they carry the same importance as errors. The
+ -- compiler cannot emit actual errors because elaboration diagnostics need
+ -- dataflow analysis, which is not available. This behavior parallels that
+ -- of the old ABE mechanism.
Error_Msg_Line_Length : Nat := 0;
-- GNAT
-- currently active.
type Exception_Mechanism_Type is
- -- Determines the handling of exceptions. See Exp_Ch11 for details
+ -- Determines the kind of mechanism used to handle exceptions
--
- (Front_End_Setjmp_Longjmp_Exceptions,
+ (Front_End_SJLJ,
-- Exceptions use setjmp/longjmp generated explicitly by the front end
-- (this includes gigi or other equivalent parts of the code generator).
-- AT END handlers are converted into exception handlers by the front
-- end in this mode.
- Back_End_Exceptions);
+ Back_End_ZCX,
-- Exceptions are handled by the back end. The front end simply
-- generates the handlers as they appear in the source, and AT END
-- handlers are left untouched (they are not converted into exception
- -- handlers when operating in this mode.
+ -- handlers when operating in this mode). Propagation is performed
+ -- using a frame unwinding scheme and requires no particular setup code
+ -- at handler sites on regular execution paths.
+
+ Back_End_SJLJ);
+ -- Similar to Back_End_ZCX with respect to the front-end processing
+ -- of regular and AT-END handlers. A setjmp/longjmp scheme is used to
+ -- propagate and setup handler contexts on regular execution paths.
+
pragma Convention (C, Exception_Mechanism_Type);
- Exception_Mechanism : Exception_Mechanism_Type :=
- Front_End_Setjmp_Longjmp_Exceptions;
+ Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ;
-- GNAT
- -- Set to the appropriate value depending on the default as given in
- -- system.ads (ZCX_By_Default). The C convention is there to make this
- -- variable accessible to gigi.
+ -- Set to the appropriate value depending on the flags in system.ads
+ -- (Frontend_Exceptions + ZCX_By_Default). The C convention is there to
+ -- allow access by gigi.
+
+ function Back_End_Exceptions return Boolean;
+ function Front_End_Exceptions return Boolean;
+ function ZCX_Exceptions return Boolean;
+ function SJLJ_Exceptions return Boolean;
+ -- GNAT
+ -- Various properties of the active Exception_Mechanism
Exception_Tracebacks : Boolean := False;
-- GNATBIND
- -- Set to True to store tracebacks in exception occurrences (-E)
+ -- Set to True to store tracebacks in exception occurrences (-Ea or -E)
+
+ Exception_Tracebacks_Symbolic : Boolean := False;
+ -- GNATBIND
+ -- Set to True to store tracebacks in exception occurrences and enable
+ -- symbolic tracebacks (-Es).
+
+ Expand_Nonbinary_Modular_Ops : Boolean := False;
+ -- Set to True to convert nonbinary modular additions into code
+ -- that relies on the front-end expansion of operator Mod.
Extensions_Allowed : Boolean := False;
-- GNAT
-- GNATMAKE, GPRBUILD
-- Set to force recompilations even when the objects are up-to-date.
+ Force_Elab_Order_File : String_Ptr := null;
+ -- GNATBIND
+ -- File name specified for -f switch (the forced elaboration order file)
+
Front_End_Inlining : Boolean := False;
-- GNAT
-- Set True to activate inlining by front-end expansion (even on GCC
-- targets, where inlining is normally handled by the back end). Set by
-- the flag -gnatN (which is now considered obsolescent, since the GCC
- -- back end can do a better job of inlining than the front end these days.
+ -- back end can do a better job of inlining than the front end these days).
Full_Path_Name_For_Brief_Errors : Boolean := False;
-- PROJECT MANAGER
-- file name with extension stripped.
Generate_C_Code : Boolean := False;
- -- GNAT
+ -- GNAT, GNATBIND
-- If True, the Cprint circuitry to generate C code output is activated.
- -- Set True by use of -gnatd.V.
+ -- Set True by use of -gnateg or -gnatd.V for GNAT, and -G for GNATBIND.
Generate_CodePeer_Messages : Boolean := False;
-- GNAT
Ghost_Mode : Ghost_Mode_Type := None;
-- GNAT
- -- Current Ghost mode setting
+ -- The current Ghost mode in effect
Global_Discard_Names : Boolean := False;
-- GNAT, GNATBIND
GNAT_Encodings : Int;
pragma Import (C, GNAT_Encodings, "gnat_encodings");
-- Constant controlling the balance between GNAT encodings and standard
- -- DWARF to emit in the debug information. See aamissing.c for definitions
- -- for the GNAAMP back end. It accepts the following values.
+ -- DWARF to emit in the debug information. It accepts the following values.
DWARF_GNAT_Encodings_All : constant Int := 0;
DWARF_GNAT_Encodings_GDB : constant Int := 1;
-- default value appropriate to the system (in Osint.Initialize), and then
-- reset if a command line switch is used to change the setting.
- Ignore_Pragma_SPARK_Mode : Boolean := False;
- -- GNAT
- -- Set True to ignore the semantics and effects of pragma SPARK_Mode when
- -- the pragma appears inside an instance whose enclosing context is subject
- -- to SPARK_Mode "off".
-
Ignore_Rep_Clauses : Boolean := False;
-- GNAT
-- Set True to ignore all representation clauses. Useful when compiling
-- code from foreign compilers for checking or ASIS purposes. Can be
-- set True by use of -gnatI.
+ Ignore_SPARK_Mode_Pragmas_In_Instance : Boolean := False;
+ -- GNAT
+ -- Set True to ignore the semantics and effects of pragma SPARK_Mode when
+ -- the pragma appears inside an instance whose enclosing context is subject
+ -- to SPARK_Mode "off". This property applies to nested instances.
+
Ignore_Style_Checks_Pragmas : Boolean := False;
-- GNAT
-- Set True to ignore all Style_Checks pragmas. Can be set True by use
Ignore_Unrecognized_VWY_Switches : Boolean := False;
-- GNAT
- -- Set True to ignore unrecognized y, V, w switches. Can be set True
- -- by use of -gnateu, causing subsequent unrecognized switches to result
- -- in a warning rather than an error.
+ -- Set True to ignore unrecognized y, V, w switches. Can be set True by
+ -- use of -gnateu, causing subsequent unrecognized switches to result in
+ -- a warning rather than an error.
+
+ Ignored_Ghost_Region : Node_Id := Empty;
+ -- GNAT
+ -- The start of the current ignored Ghost region. This value must always
+ -- reflect the starting node of the outermost ignored Ghost region. If a
+ -- nested ignored Ghost region is entered, the value must remain unchanged.
Implementation_Unit_Warnings : Boolean := True;
-- GNAT
-- cause implicit packing instead of generating an error message. Set by
-- use of pragma Implicit_Packing.
+ Include_Subprogram_In_Messages : Boolean := False;
+ -- GNAT
+ -- Set True to include the enclosing subprogram in compiler messages.
+
Ineffective_Inline_Warnings : Boolean := False;
-- GNAT
-- Set True to activate warnings if front-end inlining (-gnatN) is not able
-- Set to True to enable leap seconds support in Ada.Calendar and its
-- children.
+ Legacy_Elaboration_Checks : Boolean := False;
+ -- GNAT
+ -- Set to True when the pre-18.x access-before-elaboration model is to be
+ -- used. Modified by use of -gnatH.
+
+ Legacy_Elaboration_Order : Boolean := False;
+ -- GNATBIND
+ -- Set to True when the pre-20.x elaboration-order model is to be used.
+ -- Modified by use of -H.
+
Link_Only : Boolean := False;
-- GNATMAKE, GPRBUILD
-- Set to True to skip compile and bind steps (except when Bind_Only is
-- the list of object dependencies (-M switch). Output depends if -a switch
-- is used or not. This list can be used directly in a Makefile.
- List_Representation_Info : Int range 0 .. 3 := 0;
+ List_Representation_Info : Int range 0 .. 4 := 0;
-- GNAT
-- Set non-zero by -gnatR switch to list representation information.
-- The settings are as follows:
--
-- 0 = no listing of representation information (default as above)
- -- 1 = list rep info for user defined record and array types
- -- 2 = list rep info for all user defined types and objects
+ -- 1 = list rep info for user-defined record and array types
+ -- 2 = list rep info for all user-defined types and objects
-- 3 = like 2, but variable fields are decoded symbolically
+ -- 4 = like 3, but list rep info for relevant compiler-generated types
List_Representation_Info_To_File : Boolean := False;
-- GNAT
- -- Set true by -gnatRs switch. Causes information from -gnatR/1/2/3/m to be
+ -- Set true by -gnatRs switch. Causes information from -gnatR[1-4]m to be
-- written to file.rep (where file is the name of the source file) instead
-- of stdout. For example, if file x.adb is compiled using -gnatR2s then
-- representation info is written to x.adb.ref.
+ List_Representation_Info_To_JSON : Boolean := False;
+ -- GNAT
+ -- Set true by -gnatRj switch. Causes information from -gnatR[1-4]m to be
+ -- output in the JSON data interchange format.
+
List_Representation_Info_Mechanisms : Boolean := False;
-- GNAT
-- Set true by -gnatRm switch. Causes information on mechanisms to be
-- included in the representation output information.
+ List_Representation_Info_Extended : Boolean := False;
+ -- GNAT
+ -- Set true by -gnatRe switch. Causes extended information for record types
+ -- to be included in the representation output information.
+
List_Preprocessing_Symbols : Boolean := False;
-- GNAT, GNATPREP
-- Set to True if symbols for preprocessing a source are to be listed
Locking_Policy : Character := ' ';
-- GNAT, GNATBIND
- -- Set to ' ' for the default case (no locking policy specified). Reset to
- -- first character (uppercase) of locking policy name if a valid pragma
- -- Locking_Policy is encountered.
+
+ -- Set to ' ' for the default case (no locking policy specified). Otherwise
+ -- set based on the pragma Locking_Policy:
+ -- Ceiling_Locking: 'C'
+ -- Concurrent_Readers_Locking: 'R'
+ -- Inheritance_Locking: 'I'
Locking_Policy_Sloc : Source_Ptr := No_Location;
-- GNAT, GNATBIND
-- Maximum number of processes that should be spawned to carry out
-- compilations.
+ Minimal_Binder : Boolean := False;
+ -- GNATBIND
+ -- Set to True to suppress the generation of objects by the binder that
+ -- are not strictly required for a program to run. Intended for ZFP
+ -- applications that have tight memory constraints.
+
Minimal_Recompilation : Boolean := False;
-- GNATMAKE
-- Set to True if minimal recompilation mode requested
+ Minimize_Expression_With_Actions : Boolean := False;
+ -- GNAT
+ -- If True, minimize the use of N_Expression_With_Actions node.
+ -- This can be used in particular on some back-ends where this node is
+ -- difficult to support.
+
Modify_Tree_For_C : Boolean := False;
-- GNAT
-- If this switch is set True (currently it is set only by -gnatd.V), then
-- GNATNAME
-- Do not create backup copies of project files. Set by switch --no-backup.
+ No_Component_Reordering : Boolean := False;
+ -- GNAT
+ -- Set True if pragma No_Component_Reordering with no parameter encountered
+
No_Deletion : Boolean := False;
-- GNATPREP
-- Set by preprocessor switch -a. Do not eliminate any source text. Implies
-- in the spec of the extended main unit. Used to determine if we need to
-- do special tests for violation of this aspect.
+ No_Heap_Finalization_Pragma : Node_Id := Empty;
+ -- GNAT
+ -- Set to point to a No_Heap_Finalization pragma defined in a configuration
+ -- file.
+
No_Main_Subprogram : Boolean := False;
-- GNATMAKE, GNATBIND
-- Set to True if compilation/binding of a program without main
-- cannot be simultaneous compilations with the object files in the same
-- object directory, if project files are used.
+ OpenAcc_Enabled : Boolean := False;
+ -- GNAT
+ -- Indicates whether OpenAcc pragmas should be taken into account. Set to
+ -- True by the use of -fopenacc.
+
type Operating_Mode_Type is (Check_Syntax, Check_Semantics, Generate_Code);
pragma Ordered (Operating_Mode_Type);
Operating_Mode : Operating_Mode_Type := Generate_Code;
-- type with the semantics that each value does more than the previous one.
Optimize_Alignment : Character := 'O';
+ -- GNAT
-- Setting of Optimize_Alignment, set to T/S/O for time/space/off. Can
-- be modified by use of pragma Optimize_Alignment.
Optimize_Alignment_Local : Boolean := False;
+ -- GNAT
-- Set True if Optimize_Alignment mode is set by a local configuration
-- pragma that overrides the gnat.adc (or other configuration file) default
-- so that the unit is not dependent on the default setting. Also always
Optimization_Level : Int;
pragma Import (C, Optimization_Level, "optimize");
+ -- GNAT
-- Constant reflecting the optimization level (0,1,2,3 for -O0,-O1,-O2,-O3)
- -- See e.g. aamissing.c for definitions for the GNAAMP back end.
Optimize_Size : Int;
pragma Import (C, Optimize_Size, "optimize_size");
+ -- GNAT
-- Constant reflecting setting of -Os (optimize for size). Set to nonzero
- -- in -Os mode and set to zero otherwise. See aamissing.c for definition
- -- of "optimize_size" for the GNAAMP backend.
+ -- in -Os mode and set to zero otherwise.
Output_File_Name_Present : Boolean := False;
-- GNATBIND, GNAT, GNATMAKE
-- Indicates if a project file is used or not. Set to In_Use by the first
-- SFNP pragma.
+ Quantity_Of_Default_Size_Sec_Stacks : Int := -1;
+ -- GNATBIND
+ -- The number of default sized secondary stacks that the binder should
+ -- generate. Allows ZFP users to have the binder generate extra stacks if
+ -- needed to support multithreaded applications. A value of -1 indicates
+ -- that no size was set by the binder.
+
Queuing_Policy : Character := ' ';
-- GNAT, GNATBIND
-- Set to ' ' for the default case (no queuing policy specified). Reset to
-- Set to True to enable compatibility mode with Rational compiler, and
-- to accept renamings of implicit operations in their own scope.
+ Relaxed_Elaboration_Checks : Boolean := False;
+ -- GNAT
+ -- Set to True to ignore certain elaboration scenarios, thus making the
+ -- current ABE mechanism more permissive. This behavior is applicable to
+ -- both the default and the legacy ABE models. Modified by use of -gnatJ.
+
Relaxed_RM_Semantics : Boolean := False;
-- GNAT
-- Set to True to ignore some Ada semantic error to help parse legacy Ada
Setup_Projects : Boolean := False;
-- GNAT DRIVER
- -- Set to True for GNAT SETUP: the Project Manager creates non existing
- -- object, library and exec directories.
+ -- Set to True for GNAT SETUP: the Project Manager creates nonexistent
+ -- object, library, and exec directories.
Shared_Libgnat : Boolean;
-- GNATBIND
Style_Check_Main : Boolean := False;
-- GNAT
-- Set True if Style_Check was set for the main unit. This is used to
- -- renable style checks for units in the mail extended source that get
+ -- enable style checks for units in the main extended source that get
-- with'ed indirectly. It is set True by use of either the -gnatg or
-- -gnaty switches, but not by use of the Style_Checks pragma.
-- If true, activates the circuitry for unnesting subprograms (see the spec
-- of Exp_Unst for full details). Currently set only by use of -gnatd.1.
- Universal_Addressing_On_AAMP : Boolean := False;
- -- GNAAMP
- -- Indicates if library-level objects should be accessed and updated using
- -- universal addressing instructions on the AAMP architecture. This flag is
- -- set to True when pragma Universal_Data is given as a configuration
- -- pragma.
-
Unreserve_All_Interrupts : Boolean := False;
-- GNAT, GNATBIND
-- Normally set False, set True if a valid Unreserve_All_Interrupts pragma
-- or where no warning has been suppressed by the use of the pragma.
-- Modified by use of -gnatw.w/.W.
- type Warning_Mode_Type is (Suppress, Normal, Treat_As_Error);
+ type Warning_Mode_Type is
+ (Suppress, Normal, Treat_As_Error, Treat_Run_Time_Warnings_As_Errors);
Warning_Mode : Warning_Mode_Type := Normal;
-- GNAT, GNATBIND
-- Controls treatment of warning messages. If set to Suppress, warning
-- messages are not generated at all. In Normal mode, they are generated
-- but do not count as errors. In Treat_As_Error mode, warning messages are
- -- generated and are treated as errors. Note that Warning_Mode = Suppress
- -- causes pragma Warnings to be ignored (except for legality checks),
- -- unless we are in GNATprove_Mode, which requires pragma Warnings to
- -- be stored for the formal verification backend.
-
- Warnings_As_Errors_Count : Natural;
- -- GNAT
- -- Number of entries stored in Warnings_As_Errors table
+ -- generated and treated as errors. In Treat_Run_Time_Warnings_As_Errors,
+ -- warning messages regarding errors raised at run time are treated as
+ -- errors. Note that Warning_Mode = Suppress causes pragma Warnings to be
+ -- ignored (except for legality checks), unless we are in GNATprove_Mode,
+ -- which requires pragma Warnings to be stored for the formal verification
+ -- backend.
Wide_Character_Encoding_Method : WC_Encoding_Method := WCEM_Brackets;
-- GNAT, GNATBIND
-- set by the command line switches -gnat83/95/2005/2012, and possibly
-- modified by the use of configuration pragmas Ada_*. This switch is used
-- to set the initial value for Ada_Version mode at the start of analysis
- -- of a unit. Note however that the setting of this flag is ignored for
+ -- of a unit. Note however that the setting of this flag is ignored for
-- internal and predefined units (which are always compiled in the most up
-- to date version of Ada).
Ada_Version_Pragma_Config : Node_Id;
- -- This will be set non empty if it is set by a configuration pragma
+ -- This will be set nonempty if it is set by a configuration pragma
Ada_Version_Explicit_Config : Ada_Version_Type;
-- GNAT
-- This switch is not set when the pragma appears ahead of a given
-- unit, so it does not affect the compilation of other units.
+ No_Component_Reordering_Config : Boolean;
+ -- GNAT
+ -- This is the value of the configuration switch that is set by the
+ -- pragma No_Component_Reordering when it appears in the gnat.adc file.
+ -- This flag is used to set the initial value of No_Component_Reordering
+ -- at the start of each compilation unit, except that it is always set
+ -- False for predefined units.
+
No_Exit_Message : Boolean := False;
-- GNATMAKE, GPRBUILD
-- Set with switch --no-exit-message. When True, if there are compilation
-- is ignored for internal and predefined units (which are always compiled
-- with the standard Size semantics).
- Warnings_As_Errors_Count_Config : Natural;
- -- GNAT
- -- Count of pattern strings stored from Warning_As_Error pragmas
-
type Config_Switches_Type is private;
-- Type used to save values of the switches set from Config values
- procedure Save_Opt_Config_Switches (Save : out Config_Switches_Type);
- -- This procedure saves the current values of the switches which are
- -- initialized from the above Config values, and then resets these switches
- -- according to the Config value settings.
+ procedure Register_Config_Switches;
+ -- This procedure is called after processing the gnat.adc file and other
+ -- configuration pragma files to record the values of the Config switches,
+ -- as possibly modified by the use of command line switches and pragmas
+ -- appearing in these files.
- procedure Set_Opt_Config_Switches
+ procedure Restore_Config_Switches (Save : Config_Switches_Type);
+ -- This procedure restores a set of switch values previously saved by a
+ -- call to Save_Config_Switches.
+
+ function Save_Config_Switches return Config_Switches_Type;
+ -- Return the current state of all configuration-related attributes
+
+ procedure Set_Config_Switches
(Internal_Unit : Boolean;
Main_Unit : Boolean);
-- This procedure sets the switches to the appropriate initial values. The
-- unit. This affects setting of the assert/debug pragma switches, which
-- are normally set false by default for an internal unit, except when the
-- internal unit is the main unit, in which case we use the command line
- -- settings).
-
- procedure Restore_Opt_Config_Switches (Save : Config_Switches_Type);
- -- This procedure restores a set of switch values previously saved by a
- -- call to Save_Opt_Config_Switches (Save).
-
- procedure Register_Opt_Config_Switches;
- -- This procedure is called after processing the gnat.adc file and other
- -- configuration pragma files to record the values of the Config switches,
- -- as possibly modified by the use of command line switches and pragmas
- -- appearing in these files.
+ -- settings.
------------------------
-- Other Global Flags --
------------------------
- Expander_Active : Boolean := False;
- -- A flag that indicates if expansion is active (True) or deactivated
- -- (False). When expansion is deactivated all calls to expander routines
- -- have no effect. Note that the initial setting of False is merely to
- -- prevent saving of an undefined value for an initial call to the
- -- Expander_Mode_Save_And_Set procedure. For more information on the use of
- -- this flag, see package Expander. Indeed this flag might more logically
- -- be in the spec of Expander, but it is referenced by Errout, and it
- -- really seems wrong for Errout to depend on Expander.
-
- Static_Dispatch_Tables : Boolean := True;
+ Building_Static_Dispatch_Tables : Boolean := True;
-- This flag indicates if the backend supports generation of statically
-- allocated dispatch tables. If it is True, then the front end will
-- generate static aggregates for dispatch tables that contain forward
-- behavior can be disabled using switch -gnatd.t which will set this flag
-- to False and revert to the previous dynamic behavior.
+ Expander_Active : Boolean := False;
+ -- A flag that indicates if expansion is active (True) or deactivated
+ -- (False). When expansion is deactivated all calls to expander routines
+ -- have no effect. Note that the initial setting of False is merely to
+ -- prevent saving of an undefined value for an initial call to the
+ -- Expander_Mode_Save_And_Set procedure. For more information on the use of
+ -- this flag, see package Expander. Indeed this flag might more logically
+ -- be in the spec of Expander, but it is referenced by Errout, and it
+ -- really seems wrong for Errout to depend on Expander.
+
-----------------------
-- Tree I/O Routines --
-----------------------
---------------------------
-- The following array would more reasonably be located in Err_Vars or
- -- Errour, but we put them here to deal with licensing issues (we need
+ -- Errout, but we put them here to deal with licensing issues (we need
-- this to have the GPL exception licensing, since these variables and
-- subprograms are accessed from units with this licensing).
Warnings_As_Errors : array (1 .. 10_000) of String_Ptr;
- -- Table for recording Warning_As_Error pragmas as they are processed.
- -- It would be nicer to use Table, but there are circular elaboration
- -- problems if we try to do this, and an attempt to find some other
- -- appropriately licensed unit to declare this as a Table failed with
- -- various elaboration circularities. Memory is getting cheap these days!
+ -- Table for recording Warning_As_Error pragmas as they are processed. It
+ -- would be nicer to use Table, but there are circular elaboration problems
+ -- if we try to do this, and an attempt to find some other appropriately
+ -- licensed unit to declare this as a Table failed with various elaboration
+ -- circularities.
+
+ Warnings_As_Errors_Count : Natural;
+ -- GNAT
+ -- Number of entries stored in Warnings_As_Errors table
+
+ Warnings_As_Errors_Count_Config : Natural;
+ -- GNAT
+ -- Count of pattern strings stored from Warning_As_Error pragmas
---------------
-- GNAT_Mode --
--------------------------
private
-
-- The following type is used to save and restore settings of switches in
-- Opt that represent the configuration (i.e. result of config pragmas).
External_Name_Imp_Casing : External_Casing_Type;
Fast_Math : Boolean;
Initialize_Scalars : Boolean;
+ No_Component_Reordering : Boolean;
Normalize_Scalars : Boolean;
Optimize_Alignment : Character;
Optimize_Alignment_Local : Boolean;