aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/ada/adabkend.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/ada/adabkend.adb')
-rw-r--r--gcc-4.8/gcc/ada/adabkend.adb282
1 files changed, 0 insertions, 282 deletions
diff --git a/gcc-4.8/gcc/ada/adabkend.adb b/gcc-4.8/gcc/ada/adabkend.adb
deleted file mode 100644
index 96bd00d99..000000000
--- a/gcc-4.8/gcc/ada/adabkend.adb
+++ /dev/null
@@ -1,282 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAAMP COMPILER COMPONENTS --
--- --
--- A D A B K E N D --
--- --
--- B o d y --
--- --
--- Copyright (C) 2001-2011, AdaCore --
--- --
--- 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. --
--- --
-------------------------------------------------------------------------------
-
--- This is the version of the Back_End package for back ends written in Ada
-
-with Debug;
-with Lib;
-with Opt; use Opt;
-with Output; use Output;
-with Osint; use Osint;
-with Osint.C; use Osint.C;
-with Switch.C; use Switch.C;
-with Types; use Types;
-
-with System.OS_Lib; use System.OS_Lib;
-
-package body Adabkend is
-
- use Switch;
-
- -------------------
- -- Call_Back_End --
- -------------------
-
- procedure Call_Back_End is
- begin
- if (Opt.Verbose_Mode or Opt.Full_List)
- and then not Debug.Debug_Flag_7
- then
- Write_Eol;
- Write_Str (Product_Name);
- Write_Str (", Copyright ");
- Write_Str (Copyright_Years);
- Write_Str (" Ada Core Technologies, Inc.");
- Write_Str (" (http://www.adacore.com)");
- Write_Eol;
- Write_Eol;
- end if;
-
- Driver (Lib.Cunit (Types.Main_Unit));
- end Call_Back_End;
-
- ------------------------
- -- Scan_Compiler_Args --
- ------------------------
-
- procedure Scan_Compiler_Arguments is
- Output_File_Name_Seen : Boolean := False;
- -- Set to True after having scanned the file_name for switch
- -- "-gnatO file_name"
-
- Argument_Count : constant Integer := Arg_Count - 1;
- -- Number of arguments (excluding program name)
-
- Args : Argument_List (1 .. Argument_Count);
- Next_Arg : Positive := 1;
-
- procedure Scan_Back_End_Switches (Switch_Chars : String);
- -- Procedure to scan out switches stored in Switch_Chars. The first
- -- character is known to be a valid switch character, and there are no
- -- blanks or other switch terminator characters in the string, so the
- -- entire string should consist of valid switch characters, except that
- -- an optional terminating NUL character is allowed.
- --
- -- If the switch is not valid, control will not return. The switches
- -- must still be scanned to skip the "-o" arguments, or internal GCC
- -- switches, which may be safely ignored by other back-ends.
-
- ----------------------------
- -- Scan_Back_End_Switches --
- ----------------------------
-
- procedure Scan_Back_End_Switches (Switch_Chars : String) is
- First : constant Positive := Switch_Chars'First + 1;
- Last : constant Natural := Switch_Last (Switch_Chars);
-
- begin
- -- Process any back end switches, returning if the switch does not
- -- affect code generation or falling through if it does, so the
- -- switch will get stored.
-
- if Is_Internal_GCC_Switch (Switch_Chars) then
- Next_Arg := Next_Arg + 1;
- return; -- ignore this switch
-
- -- Record that an object file name has been specified. The actual
- -- file name argument is picked up and saved below by the main body
- -- of Scan_Compiler_Arguments.
-
- elsif Switch_Chars (First .. Last) = "o" then
- if First = Last then
- Opt.Output_File_Name_Present := True;
- return;
- else
- Fail ("invalid switch: " & Switch_Chars);
- end if;
-
- -- Set optimization indicators appropriately. In gcc-based GNAT this
- -- is picked up from imported variables set by the gcc driver, but
- -- for compilers with non-gcc back ends we do it here to allow use
- -- of these switches by the front end. Allowed optimization switches
- -- are -Os (optimize for size), -O[0123], and -O (same as -O1).
-
- elsif Switch_Chars (First) = 'O' then
- if First = Last then
- Optimization_Level := 1;
-
- elsif Last - First = 1 then
- if Switch_Chars (Last) = 's' then
- Optimize_Size := 1;
- Optimization_Level := 2; -- Consistent with gcc setting
-
- elsif Switch_Chars (Last) in '0' .. '3' then
- Optimization_Level :=
- Character'Pos (Switch_Chars (Last)) - Character'Pos ('0');
-
- else
- Fail ("invalid switch: " & Switch_Chars);
- end if;
-
- else
- Fail ("invalid switch: " & Switch_Chars);
- end if;
-
- elsif Switch_Chars (First .. Last) = "quiet" then
- return; -- ignore this switch
-
- elsif Switch_Chars (First .. Last) = "c" then
- return; -- ignore this switch
-
- -- The -x switch and its language name argument will generally be
- -- ignored by non-gcc back ends (e.g. the GNAAMP back end). In any
- -- case, we save the switch and argument in the compilation switches.
-
- elsif Switch_Chars (First .. Last) = "x" then
- Lib.Store_Compilation_Switch (Switch_Chars);
- Next_Arg := Next_Arg + 1;
-
- declare
- Argv : constant String := Args (Next_Arg).all;
-
- begin
- if Is_Switch (Argv) then
- Fail ("language name missing after -x");
- else
- Lib.Store_Compilation_Switch (Argv);
- end if;
- end;
-
- return;
-
- -- Special check, the back end switch -fno-inline also sets the
- -- front end flag to entirely inhibit all inlining. So we store it
- -- and set the appropriate flag.
-
- elsif Switch_Chars (First .. Last) = "fno-inline" then
- Lib.Store_Compilation_Switch (Switch_Chars);
- Opt.Suppress_All_Inlining := True;
- return;
-
- -- Similar processing for -fpreserve-control-flow
-
- elsif Switch_Chars (First .. Last) = "fpreserve-control-flow" then
- Lib.Store_Compilation_Switch (Switch_Chars);
- Opt.Suppress_Control_Flow_Optimizations := True;
- return;
-
- -- Ignore all other back end switches
-
- elsif Is_Back_End_Switch (Switch_Chars) then
- null;
-
- -- Give error for junk switch
-
- else
- Fail ("invalid switch: " & Switch_Chars);
- end if;
-
- -- Store any other GCC switches
-
- Lib.Store_Compilation_Switch (Switch_Chars);
- end Scan_Back_End_Switches;
-
- -- Start of processing for Scan_Compiler_Args
-
- begin
- -- Put all the arguments in argument list Args
-
- for Arg in 1 .. Argument_Count loop
- declare
- Argv : String (1 .. Len_Arg (Arg));
- begin
- Fill_Arg (Argv'Address, Arg);
- Args (Arg) := new String'(Argv);
- end;
- end loop;
-
- -- Loop through command line arguments, storing them for later access
-
- while Next_Arg <= Argument_Count loop
- Look_At_Arg : declare
- Argv : constant String := Args (Next_Arg).all;
-
- begin
- if Argv'Length = 0 then
- Fail ("Empty argument");
- end if;
-
- -- If the previous switch has set the Output_File_Name_Present
- -- flag (that is we have seen a -gnatO), then the next argument
- -- is the name of the output object file.
-
- if Opt.Output_File_Name_Present
- and then not Output_File_Name_Seen
- then
- if Is_Switch (Argv) then
- Fail ("Object file name missing after -gnatO");
- else
- Set_Output_Object_File_Name (Argv);
- Output_File_Name_Seen := True;
- end if;
-
- -- If the previous switch has set the Search_Directory_Present
- -- flag (that is if we have just seen -I), then the next
- -- argument is a search directory path.
-
- elsif Search_Directory_Present then
- if Is_Switch (Argv) then
- Fail ("search directory missing after -I");
- else
- Add_Src_Search_Dir (Argv);
-
- -- Add directory to lib search so that back-end can take as
- -- input ALI files if needed. Otherwise this won't have any
- -- impact on the compiler.
-
- Add_Lib_Search_Dir (Argv);
-
- Search_Directory_Present := False;
- end if;
-
- -- If not a switch, must be a file name
-
- elsif not Is_Switch (Argv) then
- Add_File (Argv);
-
- -- Front end switch
-
- elsif Is_Front_End_Switch (Argv) then
- Scan_Front_End_Switches (Argv, Args, Next_Arg);
-
- -- All non-front-end switches are back-end switches
-
- else
- Scan_Back_End_Switches (Argv);
- end if;
- end Look_At_Arg;
-
- Next_Arg := Next_Arg + 1;
- end loop;
- end Scan_Compiler_Arguments;
-
-end Adabkend;