]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 25 Feb 2014 16:14:58 +0000 (16:14 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 25 Feb 2014 16:14:58 +0000 (17:14 +0100)
From-SVN: r208149

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

index 98c8cecd3dbac1722f3a9b24d2023d66bde3bfa3..a5696282092c2f9b8a0f03d803d3d2edb0e92f61 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 d2446b1a5370cc0f4131272c43f198e73b78552b..4a4d0faa9f6294b4cb24151aa5504d7ff1f4a83c 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]).  */