summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-30 14:35:22 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-30 14:35:22 +0000
commit14ca6b9a43667a683654cd0fc87ba548d0b3661c (patch)
treeb930499490b07e1c897cdfe8e6d50538aecc8f2b /gcc/ada
parent4b673aa1dde655e1d89d31e583168d5831f32819 (diff)
downloadgcc-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/ChangeLog21
-rw-r--r--gcc/ada/err_vars.ads19
-rw-r--r--gcc/ada/gnatcmd.adb58
-rw-r--r--gcc/ada/makeutl.adb25
-rw-r--r--gcc/ada/makeutl.ads6
-rw-r--r--gcc/ada/scans.ads25
-rw-r--r--gcc/ada/sinput-l.adb5
-rw-r--r--gcc/ada/sinput.ads6
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