From: charlet 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: upstream/4.9.2~853 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=51c6b56e33d4dd0df3a4b1bc9cda0b13e1a84da4;p=platform%2Fupstream%2Flinaro-gcc.git * gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208149 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 + + * 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 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]). */