diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-30 14:35:22 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-30 14:35:22 +0000 |
commit | 14ca6b9a43667a683654cd0fc87ba548d0b3661c (patch) | |
tree | b930499490b07e1c897cdfe8e6d50538aecc8f2b /gcc/ada | |
parent | 4b673aa1dde655e1d89d31e583168d5831f32819 (diff) | |
download | gcc-14ca6b9a43667a683654cd0fc87ba548d0b3661c.tar.gz |
* Makefile.in (dce.o): Add $(EXCEPT_H).
* dce.c: Include except.h and delete redundant vector definitions.
(deletable_insn_p): Return false for non-call insns that can throw
if DF is running.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147002 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 21 | ||||
-rw-r--r-- | gcc/ada/err_vars.ads | 19 | ||||
-rw-r--r-- | gcc/ada/gnatcmd.adb | 58 | ||||
-rw-r--r-- | gcc/ada/makeutl.adb | 25 | ||||
-rw-r--r-- | gcc/ada/makeutl.ads | 6 | ||||
-rw-r--r-- | gcc/ada/scans.ads | 25 | ||||
-rw-r--r-- | gcc/ada/sinput-l.adb | 5 | ||||
-rw-r--r-- | gcc/ada/sinput.ads | 6 |
8 files changed, 68 insertions, 97 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 01e3ba4497a..c11325e1197 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,24 +1,3 @@ -2009-04-29 Eric Botcazou <ebotcazou@adacore.com> - - Revert - 2009-04-29 Vincent Celier <celier@adacore.com> - - * sinput-l.adb (Load_File): When preprocessing, set temporarily the - Source_File_Index_Table entries for the source, to avoid crash when - reporting an error. - - * gnatcmd.adb (Test_If_Relative_Path): Use - Makeutl.Test_If_Relative_Path. - - * makeutl.adb:(Test_If_Relative_Path): Process switches --RTS= only if - Including_RTS is True. - - * makeutl.ads (Test_If_Relative_Path): New Boolean parameter - Including_RTS defaulted to False. - - * sinput.ads, scans.ads, err_vars.ads: Initialize some variables with - a default value. - 2009-04-29 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Analyze_Subprogram_Renaming): Improve error message on diff --git a/gcc/ada/err_vars.ads b/gcc/ada/err_vars.ads index 58fca616385..c4c28dafc36 100644 --- a/gcc/ada/err_vars.ads +++ b/gcc/ada/err_vars.ads @@ -32,24 +32,31 @@ with Uintp; use Uintp; package Err_Vars is + -- All of these variables are set when needed, so they do not need to be + -- initialized. However, there is code that saves and restores existing + -- values, which may malfunction in -gnatVa mode if the variable has never + -- been iniitalized, so we initialize some variables to avoid exceptions + -- from invalid values in such cases. + ------------------ -- Error Counts -- ------------------ - Serious_Errors_Detected : Nat; + Serious_Errors_Detected : Nat := 0; -- This is a count of errors that are serious enough to stop expansion, -- and hence to prevent generation of an object file even if the -- switch -gnatQ is set. Initialized to zero at the start of compilation. + -- Initialized for -gnatVa use, see comment above. - Total_Errors_Detected : Nat; + Total_Errors_Detected : Nat := 0; -- Number of errors detected so far. Includes count of serious errors and -- non-serious errors, so this value is always greater than or equal to the -- Serious_Errors_Detected value. Initialized to zero at the start of - -- compilation. + -- compilation. Initialized for -gnatVa use, see comment above. - Warnings_Detected : Nat; + Warnings_Detected : Nat := 0; -- Number of warnings detected. Initialized to zero at the start of - -- compilation. + -- compilation. Initialized for -gnatVa use, see comment above. ---------------------------------- -- Error Message Mode Variables -- @@ -75,7 +82,7 @@ package Err_Vars is -- generated on the instantiation (referring to the template) rather -- than on the template itself. - Raise_Exception_On_Error : Nat; + Raise_Exception_On_Error : Nat := 0; -- If this value is non-zero, then any attempt to generate an error -- message raises the exception Error_Msg_Exception, and the error -- message is not output. This is used for defending against junk diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb index 81e9bc4191d..8310cd2b697 100644 --- a/gcc/ada/gnatcmd.adb +++ b/gcc/ada/gnatcmd.adb @@ -26,6 +26,7 @@ with GNAT.Directory_Operations; use GNAT.Directory_Operations; with Csets; +with Makeutl; with MLib.Tgt; use MLib.Tgt; with MLib.Utl; with MLib.Fil; @@ -1265,61 +1266,8 @@ procedure GNATCmd is Parent : String) is begin - if Switch /= null then - - declare - Sw : String (1 .. Switch'Length); - Start : Positive := 1; - - begin - Sw := Switch.all; - - if Sw (1) = '-' then - if Sw'Length >= 3 - and then (Sw (2) = 'A' or else - Sw (2) = 'I' or else - Sw (2) = 'L') - then - Start := 3; - - if Sw = "-I-" then - return; - end if; - - elsif Sw'Length >= 4 - and then (Sw (2 .. 3) = "aL" or else - Sw (2 .. 3) = "aO" or else - Sw (2 .. 3) = "aI") - then - Start := 4; - - elsif Sw'Length >= 7 - and then Sw (2 .. 6) = "-RTS=" - then - Start := 7; - else - return; - end if; - end if; - - -- If the path is relative, test if it includes directory - -- information. If it does, prepend Parent to the path. - - if not Is_Absolute_Path (Sw (Start .. Sw'Last)) then - for J in Start .. Sw'Last loop - if Sw (J) = Directory_Separator then - Switch := - new String' - (Sw (1 .. Start - 1) & - Parent & - Directory_Separator & - Sw (Start .. Sw'Last)); - return; - end if; - end loop; - end if; - end; - end if; + Makeutl.Test_If_Relative_Path + (Switch, Parent, Including_Non_Switch => False, Including_RTS => True); end Test_If_Relative_Path; ------------------- diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb index 50b9fe23b1d..17c34ff51f7 100644 --- a/gcc/ada/makeutl.adb +++ b/gcc/ada/makeutl.adb @@ -598,7 +598,8 @@ package body Makeutl is (Switch : in out String_Access; Parent : String; Including_L_Switch : Boolean := True; - Including_Non_Switch : Boolean := True) + Including_Non_Switch : Boolean := True; + Including_RTS : Boolean := False) is begin if Switch /= null then @@ -628,13 +629,20 @@ package body Makeutl is then Start := 4; + elsif Including_RTS + and then Sw'Length >= 7 + and then Sw (2 .. 6) = "-RTS=" + then + Start := 7; + else return; end if; -- Because relative path arguments to --RTS= may be relative -- to the search directory prefix, those relative path - -- arguments are not converted. + -- arguments are converted only when they include directory + -- information. if not Is_Absolute_Path (Sw (Start .. Sw'Last)) then if Parent'Length = 0 then @@ -643,6 +651,19 @@ package body Makeutl is & Sw & """) are not allowed"); + elsif Including_RTS then + for J in Start .. Sw'Last loop + if Sw (J) = Directory_Separator then + Switch := + new String' + (Sw (1 .. Start - 1) & + Parent & + Directory_Separator & + Sw (Start .. Sw'Last)); + return; + end if; + end loop; + else Switch := new String' diff --git a/gcc/ada/makeutl.ads b/gcc/ada/makeutl.ads index bb8ac84d6bf..3c9b4d97242 100644 --- a/gcc/ada/makeutl.ads +++ b/gcc/ada/makeutl.ads @@ -130,12 +130,14 @@ package Makeutl is (Switch : in out String_Access; Parent : String; Including_L_Switch : Boolean := True; - Including_Non_Switch : Boolean := True); + Including_Non_Switch : Boolean := True; + Including_RTS : Boolean := False); -- Test if Switch is a relative search path switch. -- If it is, fail if Parent is the empty string, otherwise prepend the path -- with Parent. This subprogram is only called when using project files. -- For gnatbind switches, Including_L_Switch is False, because the - -- argument of the -L switch is not a path. + -- argument of the -L switch is not a path. If Including_RTS is True, + -- process also switches --RTS=. function Path_Or_File_Name (Path : Path_Name_Type) return String; -- Returns a file name if -df is used, otherwise return a path name diff --git a/gcc/ada/scans.ads b/gcc/ada/scans.ads index 1120f067b37..6f9bcb8c727 100644 --- a/gcc/ada/scans.ads +++ b/gcc/ada/scans.ads @@ -345,36 +345,43 @@ package Scans is -- Note: these variables can only be referenced during the parsing of a -- file. Reference to any of them from Sem or the expander is wrong. - Scan_Ptr : Source_Ptr; + -- These variables are initialized as required by Scn.Initialize_Scanner, + -- and should not be referenced before such a call. However, there are + -- situations in which these variables are saved and restored, and this + -- may happen before the first Initialize_Scanner call, resulting in the + -- assignment of invalid values. To avoid this, and allow building with + -- the -gnatVa switch, we initialize some variables to known valid values. + + Scan_Ptr : Source_Ptr := No_Location; -- init for -gnatVa -- Current scan pointer location. After a call to Scan, this points -- just past the end of the token just scanned. - Token : Token_Type; + Token : Token_Type := No_Token; -- init for -gnatVa -- Type of current token - Token_Ptr : Source_Ptr; + Token_Ptr : Source_Ptr := No_Location; -- init for -gnatVa -- Pointer to first character of current token - Current_Line_Start : Source_Ptr; - -- Pointer to first character of line containing current token + Current_Line_Start : Source_Ptr := No_Location; -- init for -gnatVa + -- Pointer to first character of line containing current token. - Start_Column : Column_Number; + Start_Column : Column_Number := No_Column_Number; -- init for -gnatVa -- Starting column number (zero origin) of the first non-blank character -- on the line containing the current token. This is used for error -- recovery circuits which depend on looking at the column line up. - Type_Token_Location : Source_Ptr; + Type_Token_Location : Source_Ptr := No_Location; -- init for -gnatVa -- Within a type declaration, gives the location of the TYPE keyword that -- opened the type declaration. Used in checking the end column of a record -- declaration, which can line up either with the TYPE keyword, or with the -- start of the line containing the RECORD keyword. - Checksum : Word; + Checksum : Word := 0; -- init for -gnatVa -- Used to accumulate a CRC representing the tokens in the source -- file being compiled. This CRC includes only program tokens, and -- excludes comments. - First_Non_Blank_Location : Source_Ptr; + First_Non_Blank_Location : Source_Ptr := No_Location; -- init for -gnatVa -- Location of first non-blank character on the line containing the -- current token (i.e. the location of the character whose column number -- is stored in Start_Column). diff --git a/gcc/ada/sinput-l.adb b/gcc/ada/sinput-l.adb index 3a7b84e5816..32f8bdedd6b 100644 --- a/gcc/ada/sinput-l.adb +++ b/gcc/ada/sinput-l.adb @@ -453,6 +453,11 @@ package body Sinput.L is -- Preprocess the source if it needs to be preprocessed if Preprocessing_Needed then + -- Set temporarily the Source_File_Index_Table entries for the + -- source, to avoid crash when reporting an error. + + Set_Source_File_Index_Table (X); + if Opt.List_Preprocessing_Symbols then Get_Name_String (N); diff --git a/gcc/ada/sinput.ads b/gcc/ada/sinput.ads index e2e4ec0d67f..ca97716145e 100644 --- a/gcc/ada/sinput.ads +++ b/gcc/ada/sinput.ads @@ -423,8 +423,10 @@ package Sinput is -- Global Data -- ----------------- - Current_Source_File : Source_File_Index; - -- Source_File table index of source file currently being scanned + Current_Source_File : Source_File_Index := No_Source_File; + -- Source_File table index of source file currently being scanned. + -- Initialized so that some tools (such as gprbuild) can be built with + -- -gnatVa and pragma Initialized_Scalars without problems. Current_Source_Unit : Unit_Number_Type; -- Unit number of source file currently being scanned. The special value |