diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-14 15:10:22 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-14 15:10:22 +0200 |
commit | 0247964def38159afff19aeeb79880d8aaa63a05 (patch) | |
tree | 50af03992c889d882bb312b0e60314f61ad05e27 /gcc/ada | |
parent | e443f142047e2a9f67dd859e77d26d94fa3241e8 (diff) | |
download | gcc-0247964def38159afff19aeeb79880d8aaa63a05.zip gcc-0247964def38159afff19aeeb79880d8aaa63a05.tar.gz gcc-0247964def38159afff19aeeb79880d8aaa63a05.tar.bz2 |
[multiple changes]
2013-10-14 Robert Dewar <dewar@adacore.com>
* exp_prag.adb, exp_ch11.adb, s-exctab.adb: Minor reformatting.
* usage.adb: Add line for -gnateu switch.
2013-10-14 Vincent Celier <celier@adacore.com>
* lib-writ.ads: Add comments to indicate that a path name in
D lines may be quoted if the path name includes directories
with spaces.
2013-10-14 Robert Dewar <dewar@adacore.com>
* debug.adb: Document -gnatd.E.
* gnat1drv.adb (Adjust_Global_Switches): Set Error_To_Warning
if -gnatd.E set.
* opt.ads (Error_To_Warning): New switch.
* osint.adb: Minor reformatting.
* sem_warn.adb (Warn_On_Overlapping_Actuals): Overlap is error
in some cases in Ada 2012 mode (unless Error_To_Warning) is set.
* sem_warn.ads (Warn_On_Overlapping_Actuals): Document error
in Ada 2012 mode.
2013-10-14 Tristan Gingold <gingold@adacore.com>
* cstand.adb: Add a comment for Standard_Exception_Type.
2013-10-14 Ed Schonberg <schonberg@adacore.com>
* exp_ch4.adb (Process_Transient_Object): If a transient scope
has already been created, use the corresponding Node_To_Be_Wrapped
as the insertion point for the controlled actions.
From-SVN: r203539
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 33 | ||||
-rw-r--r-- | gcc/ada/cstand.adb | 10 | ||||
-rw-r--r-- | gcc/ada/debug.adb | 18 | ||||
-rw-r--r-- | gcc/ada/exp_ch11.adb | 19 | ||||
-rw-r--r-- | gcc/ada/exp_ch4.adb | 13 | ||||
-rw-r--r-- | gcc/ada/exp_prag.adb | 2 | ||||
-rw-r--r-- | gcc/ada/gnat1drv.adb | 7 | ||||
-rw-r--r-- | gcc/ada/lib-writ.ads | 7 | ||||
-rw-r--r-- | gcc/ada/opt.ads | 7 | ||||
-rw-r--r-- | gcc/ada/osint.adb | 6 | ||||
-rw-r--r-- | gcc/ada/s-exctab.adb | 3 | ||||
-rw-r--r-- | gcc/ada/sem_warn.adb | 35 | ||||
-rw-r--r-- | gcc/ada/sem_warn.ads | 6 | ||||
-rw-r--r-- | gcc/ada/usage.adb | 5 |
14 files changed, 133 insertions, 38 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b12ce0a..bee6a79 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,36 @@ +2013-10-14 Robert Dewar <dewar@adacore.com> + + * exp_prag.adb, exp_ch11.adb, s-exctab.adb: Minor reformatting. + * usage.adb: Add line for -gnateu switch. + +2013-10-14 Vincent Celier <celier@adacore.com> + + * lib-writ.ads: Add comments to indicate that a path name in + D lines may be quoted if the path name includes directories + with spaces. + +2013-10-14 Robert Dewar <dewar@adacore.com> + + * debug.adb: Document -gnatd.E. + * gnat1drv.adb (Adjust_Global_Switches): Set Error_To_Warning + if -gnatd.E set. + * opt.ads (Error_To_Warning): New switch. + * osint.adb: Minor reformatting. + * sem_warn.adb (Warn_On_Overlapping_Actuals): Overlap is error + in some cases in Ada 2012 mode (unless Error_To_Warning) is set. + * sem_warn.ads (Warn_On_Overlapping_Actuals): Document error + in Ada 2012 mode. + +2013-10-14 Tristan Gingold <gingold@adacore.com> + + * cstand.adb: Add a comment for Standard_Exception_Type. + +2013-10-14 Ed Schonberg <schonberg@adacore.com> + + * exp_ch4.adb (Process_Transient_Object): If a transient scope + has already been created, use the corresponding Node_To_Be_Wrapped + as the insertion point for the controlled actions. + 2013-10-14 Tristan Gingold <gingold@adacore.com> * cstand.adb (Create_Standard): Change Import_Code component diff --git a/gcc/ada/cstand.adb b/gcc/ada/cstand.adb index 87555fd..ed02238 100644 --- a/gcc/ada/cstand.adb +++ b/gcc/ada/cstand.adb @@ -1448,9 +1448,9 @@ package body CStand is (Type_Definition (Parent (Standard_Duration)))); -- Normally it does not matter that nodes in package Standard are - -- not marked as analyzed. The Scalar_Range of the fixed-point - -- type Standard_Duration is an exception, because of the special - -- test made in Freeze.Freeze_Fixed_Point_Type. + -- not marked as analyzed. The Scalar_Range of the fixed-point type + -- Standard_Duration is an exception, because of the special test + -- made in Freeze.Freeze_Fixed_Point_Type. Set_Analyzed (Scalar_Range (Standard_Duration)); @@ -1471,6 +1471,10 @@ package body CStand is -- Build standard exception type. Note that the type name here is -- actually used in the generated code, so it must be set correctly. + -- The type Standard_Exception_Type must be consistent with the type + -- System.Standard_Library.Exception_Data, as the latter is what is + -- known by the run-time. Components of the record are documented in + -- the declaration in System.Standard_Library. Standard_Exception_Type := New_Standard_Entity; Set_Ekind (Standard_Exception_Type, E_Record_Type); diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 5364574..3712fe1 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -122,7 +122,7 @@ package body Debug is -- d.B -- d.C Generate concatenation call, do not generate inline code -- d.D SPARK strict mode - -- d.E + -- d.E Turn selected errors into warnings -- d.F SPARK mode -- d.G Frame condition mode for gnat2why -- d.H @@ -581,22 +581,26 @@ package body Debug is -- d.w This flag turns off the scanning of loops to detect possible -- infinite loops. - -- d.A There seems to be a problem with ASIS if we activate the circuit - -- for reading and writing the aspect specification hash table, so - -- for now, this is controlled by the debug flag d.A. The hash table - -- is only written and read if this flag is set. - -- d.x No exception handlers in generated code. This causes exception -- handlers to be eliminated from the generated code. They are still -- fully compiled and analyzed, they just get eliminated from the -- code generation step. + -- d.A There seems to be a problem with ASIS if we activate the circuit + -- for reading and writing the aspect specification hash table, so + -- for now, this is controlled by the debug flag d.A. The hash table + -- is only written and read if this flag is set. + -- d.C Generate call to System.Concat_n.Str_Concat_n routines in cases -- where we would normally generate inline concatenation code. -- d.D SPARK strict mode. Interpret compiler permissions as strictly as -- possible in SPARK mode. - -- + + -- d.E Turn selected errors into warnings. This debug switch causes a + -- specific set of error messages into warnings. Setting this switch + -- causes Opt.Error_To_Warning to be set to True. + -- d.F SPARK mode. Generate AST in a form suitable for formal -- verification, as well as additional cross reference information in -- ALI files to compute effects of subprograms. Note that ALI files diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index d67a67f..1f5ebe8 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -1166,18 +1166,17 @@ package body Exp_Ch11 is -- Generates: -- exceptE : constant String := "A.B.EXCEP"; -- static data - -- except : exception_data := ( - -- Handled_By_Other => False, - -- Lang => 'A', - -- Name_Length => exceptE'Length, - -- Full_Name => exceptE'Address, - -- HTable_Ptr => null, - -- Foreign_Data => null, - -- Raise_Hook => null, - -- ); + -- except : exception_data := + -- (Handled_By_Other => False, + -- Lang => 'A', + -- Name_Length => exceptE'Length, + -- Full_Name => exceptE'Address, + -- HTable_Ptr => null, + -- Foreign_Data => null, + -- Raise_Hook => null); -- (protecting test only needed if not at library level) - -- + -- exceptF : Boolean := True -- static data -- if exceptF then -- exceptF := False; diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 8d6dfc4..163363e 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -12159,11 +12159,22 @@ package body Exp_Ch4 is Top : Node_Id; begin + -- In most cases an expression that creates a controlled object + -- generates a transient scope around it. If this is the case then + -- other controlled values can reuse it. + + if Scope_Is_Transient then + return Node_To_Be_Wrapped; + + -- In some cases, such as return statements, no transient scope is + -- generated, in which case we have to look up in the tree to find + -- the proper list on which to place the transient. + -- When the node is inside a case/if expression, the lifetime of any -- temporary controlled object is extended. Find a suitable insertion -- node by locating the topmost case or if expressions. - if Within_Case_Or_If_Expression (N) then + elsif Within_Case_Or_If_Expression (N) then Par := N; Top := N; while Present (Par) loop diff --git a/gcc/ada/exp_prag.adb b/gcc/ada/exp_prag.adb index 6f425d1..105f024 100644 --- a/gcc/ada/exp_prag.adb +++ b/gcc/ada/exp_prag.adb @@ -713,7 +713,7 @@ package body Exp_Prag is else Code := Make_Function_Call (Loc, - Name => + Name => New_Reference_To (RTE (RE_Import_Address), Loc), Parameter_Associations => New_List (Make_String_Literal (Loc, diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index b0e3087..24341ac 100644 --- a/gcc/ada/gnat1drv.adb +++ b/gcc/ada/gnat1drv.adb @@ -117,6 +117,13 @@ procedure Gnat1drv is Relaxed_RM_Semantics := True; end if; + -- -gnatd.E sets Error_To_Warning mode, causing selected error messages + -- to be treated as warnings instead of errors. + + if Debug_Flag_Dot_EE then + Error_To_Warning := True; + end if; + -- Disable CodePeer_Mode in Check_Syntax, since we need front-end -- expansion. diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads index ef57dfc..f886b66 100644 --- a/gcc/ada/lib-writ.ads +++ b/gcc/ada/lib-writ.ads @@ -777,6 +777,13 @@ package Lib.Writ is -- D source-name time-stamp checksum [subunit-name] line:file-name + -- source-name also includes preprocessing data file and preprocessing + -- definition file. These preprocessing files may be given as full + -- path names instead of simple file names. If a full path name + -- includes a directory with spaces, the path name is quoted (quote + -- characters (") added at start and end, and any internal quotes are + -- doubled). + -- The time-stamp field contains the time stamp of the corresponding -- source file. See types.ads for details on time stamp representation. diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index 492d5bc..762ba39 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -516,6 +516,13 @@ package Opt is -- to make a single long message, and then this message is split up into -- multiple lines not exceeding the specified length. Set by -gnatj=nn. + Error_To_Warning : Boolean := False; + -- GNAT + -- If True, then certain error messages (e.g. parameter overlap messages + -- for procedure calls in Ada 2012 mode) are treated as warnings instead + -- of errors. Set by debug flag -gnatd.E. A search for Error_To_Warning + -- will identify affected messages. + Exception_Handler_Encountered : Boolean := False; -- GNAT -- This flag is set true if the parser encounters an exception handler. diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb index 8765b4c..aefffc3 100644 --- a/gcc/ada/osint.adb +++ b/gcc/ada/osint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2013, 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- -- @@ -1044,8 +1044,8 @@ package body Osint is procedure Fail (S : String) is begin - -- We use Output in case there is a special output set up. - -- In this case Set_Standard_Error will have no immediate effect. + -- We use Output in case there is a special output set up. In this case + -- Set_Standard_Error will have no immediate effect. Set_Standard_Error; Osint.Write_Program_Name; diff --git a/gcc/ada/s-exctab.adb b/gcc/ada/s-exctab.adb index 42d4e95..afd46e9 100644 --- a/gcc/ada/s-exctab.adb +++ b/gcc/ada/s-exctab.adb @@ -67,15 +67,12 @@ package body System.Exception_Table is S1 : constant Big_String_Ptr := To_Ptr (A); S2 : constant Big_String_Ptr := To_Ptr (B); J : Integer := 1; - begin loop if S1 (J) /= S2 (J) then return False; - elsif S1 (J) = ASCII.NUL then return True; - else J := J + 1; end if; diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index 8315e65..d9c80de 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -3410,12 +3410,26 @@ package body Sem_Warn is then null; - -- Here we may need to issue message + -- Here we may need to issue overlap message else Error_Msg_Warn := + + -- Overlap checking is an error only in Ada 2012. For + -- earlier versions of Ada, this is a warning. + Ada_Version < Ada_2012 - or else not Is_Elementary_Type (Etype (Form1)); + + -- Overlap is only illegal in Ada 2012 in the case of + -- elementary types (passed by copy). For other types, + -- we always have a warning in all Ada versions. + + or else not Is_Elementary_Type (Etype (Form1)) + + -- Finally, debug flag -gnatd.E changes the error to a + -- warning even in Ada 2012 mode. + + or else Error_To_Warning; declare Act : Node_Id; @@ -3457,23 +3471,28 @@ package body Sem_Warn is then if Act1 = First_Actual (N) then Error_Msg_FE - ("`IN OUT` prefix overlaps with " - & "actual for&?I?", Act1, Form); + ("<`IN OUT` prefix overlaps with " + & "actual for&", Act1, Form); else -- For greater clarity, give name of formal Error_Msg_Node_2 := Form; Error_Msg_FE - ("writable actual for & overlaps with " - & "actual for&?I?", Act1, Form); + ("<writable actual for & overlaps with " + & "actual for&", Act1, Form); end if; else + -- For greater clarity, give name of formal + Error_Msg_Node_2 := Form; + + -- This is one of the messages + Error_Msg_FE - ("writable actual for & overlaps with " - & "actual for&?I?", Act1, Form1); + ("<writable actual for & overlaps with " + & "actual for&", Act1, Form1); end if; end; end if; diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads index 0a88395..22a3c6c 100644 --- a/gcc/ada/sem_warn.ads +++ b/gcc/ada/sem_warn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2011, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2013, 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- -- @@ -198,7 +198,9 @@ package Sem_Warn is procedure Warn_On_Overlapping_Actuals (Subp : Entity_Id; N : Node_Id); -- Called on a subprogram call. Checks whether an IN OUT actual that is -- not by-copy may overlap with another actual, thus leading to aliasing - -- in the body of the called subprogram. + -- in the body of the called subprogram. This is indeed a warning in Ada + -- versions prior to Ada 2012, but, unless Opt.Error_To_Warning is set by + -- use of debug flag -gnatd.E, this is illegal and generates an error. procedure Warn_On_Suspicious_Index (Name : Entity_Id; X : Node_Id); -- This is called after resolving an indexed component or a slice. Name diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb index ffcd724..2d541c4 100644 --- a/gcc/ada/usage.adb +++ b/gcc/ada/usage.adb @@ -251,6 +251,11 @@ begin Write_Switch_Char ("eT=?"); Write_Line ("Read target dependent information file ?, e.g. gnateT=tdf"); + -- Line for -gnateu switch + + Write_Switch_Char ("eu"); + Write_Line ("Ignore unrecognized style/validity/warning switches"); + -- Line for -gnateV switch Write_Switch_Char ("eV"); |