summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/ChangeLog23
-rw-r--r--gcc/ada/exp_util.adb6
-rw-r--r--gcc/ada/exp_util.ads3
-rw-r--r--gcc/ada/gnat_ugn.texi21
-rw-r--r--gcc/ada/par-ch6.adb25
-rw-r--r--gcc/ada/par-tchk.adb14
-rw-r--r--gcc/ada/par-util.adb9
-rw-r--r--gcc/ada/prj-conf.adb8
-rw-r--r--gcc/ada/types.ads6
-rw-r--r--gcc/ada/usage.adb10
-rw-r--r--gcc/ada/warnsw.adb15
11 files changed, 113 insertions, 27 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 42768377489..1a8e0daefc8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,28 @@
2013-01-04 Robert Dewar <dewar@adacore.com>
+ * types.ads, prj-conf.adb, par-tchk.adb: Minor reformatting.
+
+2013-01-04 Robert Dewar <dewar@adacore.com>
+
+ * par-ch6.adb (P_Subprogram): Better handling of missing IS
+ after expression function.
+ * par-util.adb (No_Constraint): Improve handling to avoid bad warnings.
+
+2013-01-04 Robert Dewar <dewar@adacore.com>
+
+ * exp_util.ads, exp_util.adb (Insert_Actions): In expression with
+ actions case, new actions are appended to the sequence rather than
+ prepended.
+
+2013-01-04 Robert Dewar <dewar@adacore.com>
+
+ * gnat_ugn.texi: Document -gnatw.d/w.D (does no apply in VMS mode).
+ * usage.adb: Add lines for -gnatw.d/w.D switches.
+ * warnsw.adb: Minor fixes (some missing cases of setting
+ Warning_Doc_Switch). Reject -gnatw.d and -gnatw.D in VMS mode.
+
+2013-01-04 Robert Dewar <dewar@adacore.com>
+
* exp_util.adb (Remove_Side_Effects): Make sure scope suppress
is restored on exit.
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 883effee6c1..2ca174eed90 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -3138,7 +3138,7 @@ package body Exp_Util is
and then not Is_Frozen (Current_Scope)
then
if No (Scope_Stack.Table
- (Scope_Stack.Last).Pending_Freeze_Actions)
+ (Scope_Stack.Last).Pending_Freeze_Actions)
then
Scope_Stack.Table (Scope_Stack.Last).Pending_Freeze_Actions :=
Ins_Actions;
@@ -3306,13 +3306,13 @@ package body Exp_Util is
return;
-- Case of appearing within an Expressions_With_Actions node. We
- -- prepend the actions to the list of actions already there, if
+ -- append the actions to the list of actions already there, if
-- the node has not been analyzed yet. Otherwise find insertion
-- location further up the tree.
when N_Expression_With_Actions =>
if not Analyzed (P) then
- Prepend_List (Ins_Actions, Actions (P));
+ Append_List (Ins_Actions, Actions (P));
return;
end if;
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads
index d87a5a46640..339fd4396a1 100644
--- a/gcc/ada/exp_util.ads
+++ b/gcc/ada/exp_util.ads
@@ -75,6 +75,9 @@ package Exp_Util is
-- expansion of the N_If_Expression node rewrites the node so that the
-- actions can be positioned normally.
+ -- For actions coming from expansion of the expression in an expression
+ -- with actions node, the action is appended to the list of actions.
+
-- Basically what we do is to climb up to the tree looking for the
-- proper insertion point, as described by one of the above cases,
-- and then insert the appropriate action or actions.
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index b372f454650..76e90a6c7f2 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -5214,6 +5214,9 @@ individually controlled. The warnings that are not turned on by this
switch are
@option{-gnatwd} (implicit dereferencing),
@option{-gnatwh} (hiding),
+@ifclear VMS
+@option{-gnatw.d} (tag warnings with -gnatw switch)
+@end ifclear
@option{-gnatw.h} (holes (gaps) in record layouts)
@option{-gnatw.i} (overlapping actuals),
@option{-gnatw.k} (redefinition of names in standard),
@@ -5362,6 +5365,24 @@ this warning option.
This switch suppresses warnings for implicit dereferences in
indexed components, slices, and selected components.
+@ifclear vms
+@item -gnatw.d
+@emph{Activate tagging of warning messages.}
+@cindex @option{-gnatw.d} (@command{gcc})
+If this switch is set, then warning messages are tagged, either with
+the string ``@option{-gnatw?}'' showing which switch controls the warning,
+or with ``[enabled by default]'' if the warning is not under control of a
+specific @option{-gnatw?} switch. This mode is off by default, and is not
+affected by the use of @code{-gnatwa}.
+
+@item -gnatw.D
+@emph{Deactivate tagging of warning messages.}
+@cindex @option{-gnatw.d} (@command{gcc})
+If this switch is set, then warning messages return to the default
+mode in which warnings are not tagged as described above for
+@code{-gnatw.d}.
+@end ifclear
+
@item -gnatwe
@emph{Treat warnings and style checks as errors.}
@cindex @option{-gnatwe} (@command{gcc})
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index 6ad3467a5d2..74736ceb4ae 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -592,15 +592,26 @@ package body Ch6 is
elsif Aspect_Specifications_Present then
goto Subprogram_Declaration;
- -- Here we have a missing IS or missing semicolon, we always guess
- -- a missing semicolon, since we are pretty good at fixing up a
- -- semicolon which should really be an IS
+ -- Here we have a missing IS or missing semicolon
else
- Error_Msg_AP -- CODEFIX
- ("|missing "";""");
- SIS_Missing_Semicolon_Message := Get_Msg_Id;
- goto Subprogram_Declaration;
+ -- If the next token is a left paren at the start of a line, then
+ -- this is almost certainly the start of the expression for an
+ -- expression function, so in this case guess a missing IS.
+
+ if Token = Tok_Left_Paren and then Token_Is_At_Start_Of_Line then
+ Error_Msg_AP -- CODEFIX
+ ("missing IS");
+
+ -- In all other cases, we guess a missing semicolon, since we are
+ -- good at fixing up a semicolon which should really be an IS.
+
+ else
+ Error_Msg_AP -- CODEFIX
+ ("|missing "";""");
+ SIS_Missing_Semicolon_Message := Get_Msg_Id;
+ goto Subprogram_Declaration;
+ end if;
end if;
end if;
diff --git a/gcc/ada/par-tchk.adb b/gcc/ada/par-tchk.adb
index 6efb1e96697..eefd7b4302e 100644
--- a/gcc/ada/par-tchk.adb
+++ b/gcc/ada/par-tchk.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, 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- --
@@ -452,10 +452,10 @@ package body Tchk is
Scan;
return;
- -- An interesting little kludge here. If the previous token is a
- -- semicolon, then there is no way that we can legitimately need another
- -- semicolon. This could only arise in an error situation where an error
- -- has already been signalled. By simply ignoring the request for a
+ -- An interesting little kludge. If the previous token is a semicolon,
+ -- then there is no way that we can legitimately need another semicolon.
+ -- This could only arise in an error situation where an error has
+ -- already been signalled. By simply ignoring the request for a
-- semicolon in this case, we avoid some spurious missing semicolon
-- messages.
@@ -474,9 +474,7 @@ package body Tchk is
-- Deal with pragma. If pragma is not at start of line, it is considered
-- misplaced otherwise we treat it as a normal missing semicolon case.
- elsif Token = Tok_Pragma
- and then not Token_Is_At_Start_Of_Line
- then
+ elsif Token = Tok_Pragma and then not Token_Is_At_Start_Of_Line then
P_Pragmas_Misplaced;
if Token = Tok_Semicolon then
diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb
index fa592a7ea50..e18801f024f 100644
--- a/gcc/ada/par-util.adb
+++ b/gcc/ada/par-util.adb
@@ -635,6 +635,15 @@ package body Util is
procedure No_Constraint is
begin
+ -- If next token is at start of line, don't object, it seems relatively
+ -- unlikely that a constraint would be on its own starting a line.
+
+ if Token_Is_At_Start_Of_Line then
+ return;
+ end if;
+
+ -- Otherwise if we have a token that could start a constraint, object
+
if Token in Token_Class_Consk then
Error_Msg_SC ("constraint not allowed here");
Discard_Junk_Node (P_Constraint_Opt);
diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb
index 2a00c098621..d64c78b3bfc 100644
--- a/gcc/ada/prj-conf.adb
+++ b/gcc/ada/prj-conf.adb
@@ -688,9 +688,9 @@ package body Prj.Conf is
if Switch.Value /= No_Name then
Get_Name_String (Switch.Value);
- if Conf_File_Name'Length = 0 and then
- Name_Len > 9 and then
- Name_Buffer (1 .. 9) = "--config="
+ if Conf_File_Name'Length = 0
+ and then Name_Len > 9
+ and then Name_Buffer (1 .. 9) = "--config="
then
Conf_File_Name :=
new String'(Name_Buffer (10 .. Name_Len));
@@ -1357,7 +1357,7 @@ package body Prj.Conf is
end if;
if Config_File_Path = null then
- if (not Allow_Automatic_Generation)
+ if not Allow_Automatic_Generation
and then Conf_File_Name'Length > 0
then
Raise_Invalid_Config
diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads
index d983c2915a4..a63e10c97e8 100644
--- a/gcc/ada/types.ads
+++ b/gcc/ada/types.ads
@@ -257,13 +257,13 @@ package Types is
-- possible values for each of the above types is disjoint so that this
-- distinction is possible.
- type Union_Id is new Int;
- -- The type in the tree for a union of possible ID values
-
-- Note: it is also helpful for debugging purposes to make these ranges
-- distinct. If a bug leads to misidentification of a value, then it will
-- typically result in an out of range value and a Constraint_Error.
+ type Union_Id is new Int;
+ -- The type in the tree for a union of possible ID values
+
List_Low_Bound : constant := -100_000_000;
-- The List_Id values are subscripts into an array of list headers which
-- has List_Low_Bound as its lower bound. This value is chosen so that all
diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb
index 436a8865f22..f4cceb46d23 100644
--- a/gcc/ada/usage.adb
+++ b/gcc/ada/usage.adb
@@ -474,6 +474,16 @@ begin
Write_Line (" .C* turn off warnings for unrepped components");
Write_Line (" d turn on warnings for implicit dereference");
Write_Line (" D* turn off warnings for implicit dereference");
+
+ -- Switches -gnatw.d/w.D not available on VMS
+
+ if not OpenVMS_On_Target then
+ Write_Line
+ (" .d turn on tagging of warnings with -gnatw switch");
+ Write_Line
+ (" .D* turn off tagging of warnings with -gnatw switch");
+ end if;
+
Write_Line (" e treat all warnings (but not info) as errors");
Write_Line (" .e turn on every optional info/warning " &
"(no exceptions)");
diff --git a/gcc/ada/warnsw.adb b/gcc/ada/warnsw.adb
index a8d31e45231..9f8512f18de 100644
--- a/gcc/ada/warnsw.adb
+++ b/gcc/ada/warnsw.adb
@@ -53,10 +53,18 @@ package body Warnsw is
Warn_On_Unrepped_Components := False;
when 'd' =>
- Warning_Doc_Switch := True;
+ if Open_VMS_On_Target then
+ return False;
+ end if;
+
+ Warning_Doc_Switch := True;
when 'D' =>
- Warning_Doc_Switch := False;
+ if Open_VMS_On_Target then
+ return False;
+ end if;
+
+ Warning_Doc_Switch := False;
when 'e' =>
Address_Clause_Overlay_Warnings := True;
@@ -68,6 +76,7 @@ package body Warnsw is
Implementation_Unit_Warnings := True;
Ineffective_Inline_Warnings := True;
List_Inherited_Aspects := True;
+ Warning_Doc_Switch := True;
Warn_On_Ada_2005_Compatibility := True;
Warn_On_Ada_2012_Compatibility := True;
Warn_On_All_Unread_Out_Parameters := True;
@@ -217,6 +226,7 @@ package body Warnsw is
Implementation_Unit_Warnings := False;
Ineffective_Inline_Warnings := True;
List_Inherited_Aspects := False;
+ Warning_Doc_Switch := False;
Warn_On_Ada_2005_Compatibility := True;
Warn_On_Ada_2012_Compatibility := True;
Warn_On_All_Unread_Out_Parameters := False;
@@ -296,6 +306,7 @@ package body Warnsw is
Implementation_Unit_Warnings := False;
Ineffective_Inline_Warnings := False;
List_Inherited_Aspects := False;
+ Warning_Doc_Switch := False;
Warn_On_Ada_2005_Compatibility := False;
Warn_On_Ada_2012_Compatibility := False;
Warn_On_All_Unread_Out_Parameters := False;