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/ada/gcc-interface/trans.c | |
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/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 25 |
1 files changed, 21 insertions, 4 deletions
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]). */ |