aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/ada/frontend.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/gcc/ada/frontend.adb')
-rw-r--r--gcc-4.4.3/gcc/ada/frontend.adb368
1 files changed, 0 insertions, 368 deletions
diff --git a/gcc-4.4.3/gcc/ada/frontend.adb b/gcc-4.4.3/gcc/ada/frontend.adb
deleted file mode 100644
index c01e8ef76..000000000
--- a/gcc-4.4.3/gcc/ada/frontend.adb
+++ /dev/null
@@ -1,368 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT COMPILER COMPONENTS --
--- --
--- F R O N T E N D --
--- --
--- B o d y --
--- --
--- Copyright (C) 1992-2008, 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- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING3. If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
-with System.Strings; use System.Strings;
-
-with Atree; use Atree;
-with Checks;
-with CStand;
-with Debug; use Debug;
-with Elists;
-with Exp_Dbug;
-with Fmap;
-with Fname.UF;
-with Inline; use Inline;
-with Lib; use Lib;
-with Lib.Load; use Lib.Load;
-with Live; use Live;
-with Namet; use Namet;
-with Nlists; use Nlists;
-with Opt; use Opt;
-with Osint;
-with Par;
-with Prepcomp;
-with Rtsfind;
-with Sprint;
-with Scn; use Scn;
-with Sem; use Sem;
-with Sem_Aux;
-with Sem_Ch8; use Sem_Ch8;
-with Sem_Elab; use Sem_Elab;
-with Sem_Prag; use Sem_Prag;
-with Sem_Warn; use Sem_Warn;
-with Sinfo; use Sinfo;
-with Sinput; use Sinput;
-with Sinput.L; use Sinput.L;
-with Targparm; use Targparm;
-with Tbuild; use Tbuild;
-with Types; use Types;
-
-procedure Frontend is
- Config_Pragmas : List_Id;
- -- Gather configuration pragmas
-
-begin
- -- Carry out package initializations. These are initializations which
- -- might logically be performed at elaboration time, were it not for
- -- the fact that we may be doing things more than once in the big loop
- -- over files. Like elaboration, the order in which these calls are
- -- made is in some cases important. For example, Lib cannot be
- -- initialized until Namet, since it uses names table entries.
-
- Rtsfind.Initialize;
- Atree.Initialize;
- Nlists.Initialize;
- Elists.Initialize;
- Lib.Load.Initialize;
- Sem_Aux.Initialize;
- Sem_Ch8.Initialize;
- Sem_Prag.Initialize;
- Fname.UF.Initialize;
- Checks.Initialize;
- Sem_Warn.Initialize;
-
- -- Create package Standard
-
- CStand.Create_Standard;
-
- -- Check possible symbol definitions specified by -gnateD switches
-
- Prepcomp.Process_Command_Line_Symbol_Definitions;
-
- -- If -gnatep= was specified, parse the preprocessing data file
-
- if Preprocessing_Data_File /= null then
- Name_Len := Preprocessing_Data_File'Length;
- Name_Buffer (1 .. Name_Len) := Preprocessing_Data_File.all;
- Prepcomp.Parse_Preprocessing_Data_File (Name_Find);
-
- -- Otherwise, check if there were preprocessing symbols on the command
- -- line and set preprocessing if there are.
-
- else
- Prepcomp.Check_Symbols;
- end if;
-
- -- Now that the preprocessing situation is established, we are able to
- -- load the main source (this is no longer done by Lib.Load.Initialize).
-
- Lib.Load.Load_Main_Source;
-
- -- Return immediately if the main source could not be parsed
-
- if Sinput.Main_Source_File = No_Source_File then
- return;
- end if;
-
- -- Read and process configuration pragma files if present
-
- declare
- Save_Style_Check : constant Boolean := Opt.Style_Check;
- -- Save style check mode so it can be restored later
-
- Source_Config_File : Source_File_Index;
- -- Source reference for -gnatec configuration file
-
- Prag : Node_Id;
-
- begin
- -- We always analyze config files with style checks off, since
- -- we don't want a miscellaneous gnat.adc that is around to
- -- discombobulate intended -gnatg or -gnaty compilations. We
- -- also disconnect checking for maximum line length.
-
- Opt.Style_Check := False;
- Style_Check := False;
-
- -- Capture current suppress options, which may get modified
-
- Scope_Suppress := Opt.Suppress_Options;
-
- -- First deal with gnat.adc file
-
- if Opt.Config_File then
- Name_Buffer (1 .. 8) := "gnat.adc";
- Name_Len := 8;
- Source_gnat_adc := Load_Config_File (Name_Enter);
-
- if Source_gnat_adc /= No_Source_File then
- Initialize_Scanner (No_Unit, Source_gnat_adc);
- Config_Pragmas := Par (Configuration_Pragmas => True);
-
- else
- Config_Pragmas := Empty_List;
- end if;
-
- else
- Config_Pragmas := Empty_List;
- end if;
-
- -- Now deal with specified config pragmas files if there are any
-
- if Opt.Config_File_Names /= null then
- for Index in Opt.Config_File_Names'Range loop
- Name_Len := Config_File_Names (Index)'Length;
- Name_Buffer (1 .. Name_Len) := Config_File_Names (Index).all;
- Source_Config_File := Load_Config_File (Name_Enter);
-
- if Source_Config_File = No_Source_File then
- Osint.Fail
- ("cannot find configuration pragmas file ",
- Config_File_Names (Index).all);
- end if;
-
- Initialize_Scanner (No_Unit, Source_Config_File);
- Append_List_To
- (Config_Pragmas, Par (Configuration_Pragmas => True));
- end loop;
- end if;
-
- -- Now analyze all pragmas except those whose analysis must be
- -- deferred till after the main unit is analyzed.
-
- if Config_Pragmas /= Error_List
- and then Operating_Mode /= Check_Syntax
- then
- Prag := First (Config_Pragmas);
- while Present (Prag) loop
- if not Delay_Config_Pragma_Analyze (Prag) then
- Analyze_Pragma (Prag);
- end if;
-
- Next (Prag);
- end loop;
- end if;
-
- -- Restore style check, but if config file turned on checks, leave on!
-
- Opt.Style_Check := Save_Style_Check or Style_Check;
-
- -- Capture any modifications to suppress options from config pragmas
-
- Opt.Suppress_Options := Scope_Suppress;
- end;
-
- -- If there was a -gnatem switch, initialize the mappings of unit names to
- -- file names and of file names to path names from the mapping file.
-
- if Mapping_File_Name /= null then
- Fmap.Initialize (Mapping_File_Name.all);
- end if;
-
- -- Adjust Optimize_Alignment mode from debug switches if necessary
-
- if Debug_Flag_Dot_SS then
- Optimize_Alignment := 'S';
- elsif Debug_Flag_Dot_TT then
- Optimize_Alignment := 'T';
- end if;
-
- -- We have now processed the command line switches, and the gnat.adc
- -- file, so this is the point at which we want to capture the values
- -- of the configuration switches (see Opt for further details).
-
- Opt.Register_Opt_Config_Switches;
-
- -- Check for file which contains No_Body pragma
-
- if Source_File_Is_No_Body (Source_Index (Main_Unit)) then
- Change_Main_Unit_To_Spec;
- end if;
-
- -- Initialize the scanner. Note that we do this after the call to
- -- Create_Standard, which uses the scanner in its processing of
- -- floating-point bounds.
-
- Initialize_Scanner (Main_Unit, Source_Index (Main_Unit));
-
- -- Here we call the parser to parse the compilation unit (or units in
- -- the check syntax mode, but in that case we won't go on to the
- -- semantics in any case).
-
- Discard_List (Par (Configuration_Pragmas => False));
-
- -- The main unit is now loaded, and subunits of it can be loaded,
- -- without reporting spurious loading circularities.
-
- Set_Loading (Main_Unit, False);
-
- -- Now that the main unit is installed, we can complete the analysis
- -- of the pragmas in gnat.adc and the configuration file, that require
- -- a context for their semantic processing.
-
- if Config_Pragmas /= Error_List
- and then Operating_Mode /= Check_Syntax
- then
- -- Pragmas that require some semantic activity, such as
- -- Interrupt_State, cannot be processed until the main unit
- -- is installed, because they require a compilation unit on
- -- which to attach with_clauses, etc. So analyze them now.
-
- declare
- Prag : Node_Id;
-
- begin
- Prag := First (Config_Pragmas);
- while Present (Prag) loop
- if Delay_Config_Pragma_Analyze (Prag) then
- Analyze_Pragma (Prag);
- end if;
-
- Next (Prag);
- end loop;
- end;
- end if;
-
- -- Now on to the semantics. Skip if in syntax only mode
-
- if Operating_Mode /= Check_Syntax then
-
- -- Install the configuration pragmas in the tree
-
- Set_Config_Pragmas (Aux_Decls_Node (Cunit (Main_Unit)), Config_Pragmas);
-
- -- Following steps are skipped if we had a fatal error during parsing
-
- if not Fatal_Error (Main_Unit) then
-
- -- Reset Operating_Mode to Check_Semantics for subunits. We cannot
- -- actually generate code for subunits, so we suppress expansion.
- -- This also corrects certain problems that occur if we try to
- -- incorporate subunits at a lower level.
-
- if Operating_Mode = Generate_Code
- and then Nkind (Unit (Cunit (Main_Unit))) = N_Subunit
- then
- Operating_Mode := Check_Semantics;
- end if;
-
- -- Analyze (and possibly expand) main unit
-
- Scope_Suppress := Suppress_Options;
- Semantics (Cunit (Main_Unit));
-
- -- Cleanup processing after completing main analysis
-
- if Operating_Mode = Generate_Code
- or else (Operating_Mode = Check_Semantics
- and then ASIS_Mode)
- then
- Instantiate_Bodies;
- end if;
-
- if Operating_Mode = Generate_Code then
- if Inline_Processing_Required then
- Analyze_Inlined_Bodies;
- end if;
-
- -- Remove entities from program that do not have any
- -- execution time references.
-
- if Debug_Flag_UU then
- Collect_Garbage_Entities;
- end if;
-
- Check_Elab_Calls;
- end if;
-
- -- List library units if requested
-
- if List_Units then
- Lib.List;
- end if;
-
- -- Output waiting warning messages
-
- Sem_Warn.Output_Non_Modifed_In_Out_Warnings;
- Sem_Warn.Output_Unreferenced_Messages;
- Sem_Warn.Check_Unused_Withs;
- Sem_Warn.Output_Unused_Warnings_Off_Warnings;
- end if;
- end if;
-
- -- Qualify all entity names in inner packages, package bodies, etc.,
- -- except when compiling for the VM back-ends, which depend on
- -- having unqualified names in certain cases and handles the
- -- generation of qualified names when needed.
-
- if VM_Target = No_VM then
- Exp_Dbug.Qualify_All_Entity_Names;
- end if;
-
- -- Dump the source now. Note that we do this as soon as the analysis
- -- of the tree is complete, because it is not just a dump in the case
- -- of -gnatD, where it rewrites all source locations in the tree.
-
- Sprint.Source_Dump;
-
- -- If a mapping file has been specified by a -gnatem switch, update
- -- it if there has been some sources that were not in the mappings.
-
- if Mapping_File_Name /= null then
- Fmap.Update_Mapping_File (Mapping_File_Name.all);
- end if;
-
- return;
-end Frontend;