From: Eric Botcazou Date: Tue, 25 Feb 2014 16:14:58 +0000 (+0000) Subject: * gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error. X-Git-Tag: releases/gcc-4.9.0~672 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2749b01b7d6a211769ecf573da8e4c16f266f04c;p=thirdparty%2Fgcc.git * gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error. From-SVN: r208149 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 98c8cecd3dba..a5696282092c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2014-02-25 Eric Botcazou + + * gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error. + 2014-02-25 Robert Dewar * 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 d2446b1a5370..4a4d0faa9f62 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]). */