From 51c6b56e33d4dd0df3a4b1bc9cda0b13e1a84da4 Mon Sep 17 00:00:00 2001 From: charlet Date: Tue, 25 Feb 2014 16:14:58 +0000 Subject: [PATCH] * 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 --- gcc/ada/ChangeLog | 4 ++++ 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 + + * 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]). */ -- 2.7.4