* gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error.
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Feb 2014 16:14:58 +0000 (16:14 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Feb 2014 16:14:58 +0000 (16:14 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208149 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gcc-interface/trans.c

index 98c8cec..a569628 100644 (file)
@@ -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
index d2446b1..4a4d0fa 100644 (file)
@@ -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 Warning(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]).  */