diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2014-02-25 16:14:58 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-02-25 17:14:58 +0100 |
commit | 2749b01b7d6a211769ecf573da8e4c16f266f04c (patch) | |
tree | 0a8715526ba53a14f115b0b240e58ed64143f8bd /gcc | |
parent | e7ba564fca6cb914e202ed4807142b7008bcde0c (diff) | |
download | gcc-2749b01b7d6a211769ecf573da8e4c16f266f04c.zip gcc-2749b01b7d6a211769ecf573da8e4c16f266f04c.tar.gz gcc-2749b01b7d6a211769ecf573da8e4c16f266f04c.tar.bz2 |
* gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error.
From-SVN: r208149
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 25 |
2 files changed, 25 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 98c8cec..a569628 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2014-02-25 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error. + 2014-02-25 Robert Dewar <dewar@adacore.com> * rtsfind.adb (Is_RTE): Protect against entity with no scope diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index d2446b1..4a4d0fa 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -1194,6 +1194,7 @@ static tree Pragma_to_gnu (Node_Id gnat_node) { tree gnu_result = alloc_stmt_list (); + unsigned char pragma_id; Node_Id gnat_temp; /* Do nothing if we are just annotating types and check for (and ignore) @@ -1202,7 +1203,8 @@ Pragma_to_gnu (Node_Id gnat_node) || !Is_Pragma_Name (Chars (Pragma_Identifier (gnat_node)))) return gnu_result; - switch (Get_Pragma_Id (Chars (Pragma_Identifier (gnat_node)))) + pragma_id = Get_Pragma_Id (Chars (Pragma_Identifier (gnat_node))); + switch (pragma_id) { case Pragma_Inspection_Point: /* Do nothing at top level: all such variables are already viewable. */ @@ -1319,6 +1321,7 @@ Pragma_to_gnu (Node_Id gnat_node) post_error ("must specify -g?", gnat_node); break; + case Pragma_Warning_As_Error: case Pragma_Warnings: { Node_Id gnat_expr; @@ -1331,12 +1334,26 @@ Pragma_to_gnu (Node_Id gnat_node) gnat_temp = First (Pragma_Argument_Associations (gnat_node)); - /* This is the String form: pragma Warnings (String). */ + /* This is the String form: pragma Warning{s|_As_Error}(String). */ if (Nkind (Expression (gnat_temp)) == N_String_Literal) { - kind = DK_WARNING; + switch (pragma_id) + { + case Pragma_Warning_As_Error: + kind = DK_ERROR; + imply = false; + break; + + case Pragma_Warnings: + kind = DK_WARNING; + imply = true; + break; + + default: + gcc_unreachable (); + } + gnat_expr = Expression (gnat_temp); - imply = true; } /* This is the On/Off form: pragma Warnings (On | Off [,String]). */ |