+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
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)
|| !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. */
post_error ("must specify -g?", gnat_node);
break;
+ case Pragma_Warning_As_Error:
case Pragma_Warnings:
{
Node_Id gnat_expr;
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]). */