c-attribs.c (common_handle_aligned_attribute): Avoid issuing an error for attribute...
authorMartin Sebor <msebor@redhat.com>
Sun, 17 Dec 2017 23:23:28 +0000 (23:23 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Sun, 17 Dec 2017 23:23:28 +0000 (16:23 -0700)
gcc/c-family/ChangeLog:

* c-attribs.c (common_handle_aligned_attribute): Avoid issuing
an error for attribute warn_if_not_aligned.

From-SVN: r255767

gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c

index 0f0a370d8de10fad9e3bc3a8eb5e57d78947e103..dd71fd01fe025893f4b823a5c0dc903714b785ea 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-17  Martin Sebor  <msebor@redhat.com>
+
+       * c-attribs.c (common_handle_aligned_attribute): Avoid issuing
+       an error for attribute warn_if_not_aligned.
+
 2017-12-16  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/78918
index 2625f87d19dafb61433d277da22f9535a6c34378..0ff02996ade29a79dbdfddf6c681dac78c746b15 100644 (file)
@@ -1879,14 +1879,17 @@ common_handle_aligned_attribute (tree *node, tree name, tree args, int flags,
       curalign /= BITS_PER_UNIT;
       bitalign /= BITS_PER_UNIT;
 
+      bool diagd = true;
       if (DECL_USER_ALIGN (decl) || DECL_USER_ALIGN (last_decl))
-       warning (OPT_Wattributes,
-                "ignoring attribute %<%E (%u)%> because it conflicts with "
-                "attribute %<%E (%u)%>", name, bitalign, name, curalign);
-      else
+       diagd = warning (OPT_Wattributes,
+                         "ignoring attribute %<%E (%u)%> because it conflicts "
+                         "with attribute %<%E (%u)%>",
+                         name, bitalign, name, curalign);
+      else if (!warn_if_not_aligned_p)
+       /* Do not error out for attribute warn_if_not_aligned.  */
        error ("alignment for %q+D must be at least %d", decl, curalign);
 
-      if (note)
+      if (diagd && note)
        inform (DECL_SOURCE_LOCATION (last_decl), "previous declaration here");
 
       *no_add_attrs = true;