summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-16 14:21:34 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-16 14:21:34 +0000
commit86ef3bbb35335d2d1284e55e1ed4d164e102e7db (patch)
treefe660786a086e74af2669d5df532ded0131e633b
parentf69938188a9a01058c5d5f62d252fe4267a40832 (diff)
downloadgcc-86ef3bbb35335d2d1284e55e1ed4d164e102e7db.tar.gz
2014-07-16 Robert Dewar <dewar@adacore.com>
* gnat_rm.texi: Document that leading/trailing asterisks are now implied for the pattern match string for pragma Warnings and Warning_As_Error. * sem_prag.adb (Acquire_Warning_Match_String): New procedure. (Analyze_Pragma, case Warning_As_Error): Call Acquire_Warning_Match_String. (Analyze_Pragma, case Warnings): Call Acquire_Warning_Match_String. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212651 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/gnat_rm.texi19
-rw-r--r--gcc/ada/sem_prag.adb47
3 files changed, 64 insertions, 12 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 06f92f39971..abee07f9b5d 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,13 @@
+2014-07-16 Robert Dewar <dewar@adacore.com>
+
+ * gnat_rm.texi: Document that leading/trailing asterisks are
+ now implied for the pattern match string for pragma Warnings
+ and Warning_As_Error.
+ * sem_prag.adb (Acquire_Warning_Match_String): New procedure.
+ (Analyze_Pragma, case Warning_As_Error): Call
+ Acquire_Warning_Match_String.
+ (Analyze_Pragma, case Warnings): Call Acquire_Warning_Match_String.
+
2014-07-16 Bob Duff <duff@adacore.com>
* gnat_ugn.texi: Document need for project file
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 6afacd2a348..166a6cce21d 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -7328,7 +7328,8 @@ pragma Unreferenced (library_unit_NAME @{, library_unit_NAME@});
@noindent
This pragma signals that the entities whose names are listed are
-deliberately not referenced in the current source unit. This
+deliberately not referenced in the current source unit after the
+occurrence of the pragma. This
suppresses warnings about the
entities being unreferenced, and in addition a warning will be
generated if one of these entities is in fact subsequently referenced in the
@@ -7576,12 +7577,16 @@ which treats all warnings as errors.
The pattern may contain asterisks, which match zero or more characters in
the message. For example, you can use
-@code{pragma Warning_As_Error ("*bits of*unused")} to treat the warning
+@code{pragma Warning_As_Error ("bits of*unused")} to treat the warning
message @code{warning: 960 bits of "a" unused} as an error. No other regular
expression notations are permitted. All characters other than asterisk in
these three specific cases are treated as literal characters in the match.
The match is case insensitive, for example XYZ matches xyz.
+Note that the pattern matches if it occurs anywhere within the warning
+message string (it is not necessary to put an asterisk at the start and
+the end of the message, since this is implied).
+
Another possibility for the static_string_EXPRESSION which works whether
or not error tags are enabled (@option{-gnatw.d}) is to use the
@option{-gnatw} tag string, enclosed in brackets,
@@ -7716,20 +7721,24 @@ warning messages (not including the initial "warning: " tag).
The pattern may contain asterisks, which match zero or more characters in
the message. For example, you can use
-@code{pragma Warnings (Off, "*bits of*unused")} to suppress the warning
+@code{pragma Warnings (Off, "bits of*unused")} to suppress the warning
message @code{warning: 960 bits of "a" unused}. No other regular
expression notations are permitted. All characters other than asterisk in
these three specific cases are treated as literal characters in the match.
The match is case insensitive, for example XYZ matches xyz.
+Note that the pattern matches if it occurs anywhere within the warning
+message string (it is not necessary to put an asterisk at the start and
+the end of the message, since this is implied).
+
The above use of patterns to match the message applies only to warning
messages generated by the front end. This form of the pragma with a string
argument can also be used to control warnings provided by the back end and
mentioned above. By using a single full @option{-Wxxx} switch in the pragma,
such warnings can be turned on and off.
-There are two ways to use the pragma in this form. The OFF form can be used as a
-configuration pragma. The effect is to suppress all warnings (if any)
+There are two ways to use the pragma in this form. The OFF form can be used
+as a configuration pragma. The effect is to suppress all warnings (if any)
that match the pattern string throughout the compilation (or match the
-W switch in the back end case).
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index bd75f02834f..2c99be19dd3 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -2781,6 +2781,16 @@ package body Sem_Prag is
type Args_List is array (Natural range <>) of Node_Id;
-- Types used for arguments to Check_Arg_Order and Gather_Associations
+ -----------------------
+ -- Local Subprograms --
+ -----------------------
+
+ procedure Acquire_Warning_Match_String (Arg : Node_Id);
+ -- Used by pragma Warnings (Off, string), and Warn_As_Error (string) to
+ -- get the given string argument, and place it in Name_Buffer, adding
+ -- leading and trailing asterisks if they are not already present. The
+ -- caller has already checked that Arg is a static string expression.
+
procedure Ada_2005_Pragma;
-- Called for pragmas defined in Ada 2005, that are not in Ada 95. In
-- Ada 95 mode, these are implementation defined pragmas, so should be
@@ -3341,8 +3351,33 @@ package body Sem_Prag is
procedure Set_Ravenscar_Profile (N : Node_Id);
-- Activate the set of configuration pragmas and restrictions that make
-- up the Ravenscar Profile. N is the corresponding pragma node, which
- -- is used for error messages on any constructs that violate the
- -- profile.
+ -- is used for error messages on any constructs violating the profile.
+
+ ----------------------------------
+ -- Acquire_Warning_Match_String --
+ ----------------------------------
+
+ procedure Acquire_Warning_Match_String (Arg : Node_Id) is
+ begin
+ String_To_Name_Buffer
+ (Strval (Expr_Value_S (Get_Pragma_Arg (Arg))));
+
+ -- Add asterisk at start if not already there
+
+ if Name_Len > 0 and then Name_Buffer (1) /= '*' then
+ Name_Buffer (2 .. Name_Len + 1) :=
+ Name_Buffer (1 .. Name_Len);
+ Name_Buffer (1) := '*';
+ Name_Len := Name_Len + 1;
+ end if;
+
+ -- Add asterisk at end if not already there
+
+ if Name_Buffer (Name_Len) /= '*' then
+ Name_Len := Name_Len + 1;
+ Name_Buffer (Name_Len) := '*';
+ end if;
+ end Acquire_Warning_Match_String;
---------------------
-- Ada_2005_Pragma --
@@ -21209,8 +21244,7 @@ package body Sem_Prag is
-- OK static string expression
else
- String_To_Name_Buffer
- (Strval (Expr_Value_S (Get_Pragma_Arg (Arg1))));
+ Acquire_Warning_Match_String (Arg1);
Warnings_As_Errors_Count := Warnings_As_Errors_Count + 1;
Warnings_As_Errors (Warnings_As_Errors_Count) :=
new String'(Name_Buffer (1 .. Name_Len));
@@ -21364,7 +21398,7 @@ package body Sem_Prag is
else
Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off);
- Check_At_Most_N_Arguments (2);
+ Check_Arg_Count (2);
declare
E_Id : Node_Id;
@@ -21438,8 +21472,7 @@ package body Sem_Prag is
-- Static string expression case
else
- String_To_Name_Buffer
- (Strval (Expr_Value_S (Get_Pragma_Arg (Arg2))));
+ Acquire_Warning_Match_String (Arg2);
-- Note on configuration pragma case: If this is a
-- configuration pragma, then for an OFF pragma, we