Don't warn function alignment if warn_if_not_aligned_p is true
authorH.J. Lu <hongjiu.lu@intel.com>
Tue, 12 Sep 2017 16:35:39 +0000 (16:35 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Tue, 12 Sep 2017 16:35:39 +0000 (09:35 -0700)
When warn_if_not_aligned_p is true, a warning will be issued on function
declaration later.  There is no need to warn function alignment when
warn_if_not_aligned_p is true.

* c-attribs.c (common_handle_aligned_attribute): Don't warn
function alignment if warn_if_not_aligned_p is true.

From-SVN: r252036

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

index 29037e5af8fcd465ad5ac711a60499c61d05aae9..6391ced934d40e2c8564d462e7ad319d0e81a60d 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * c-attribs.c (common_handle_aligned_attribute): Don't warn
+       function alignment if warn_if_not_aligned_p is true.
+
 2017-09-12  Nathan Sidwell  <nathan@acm.org>
 
        * c-common.c (field_decl_cmp, resort_data, resort_field_decl_cmp,
index 4f6638fd99e0a816a307b5b92c884d4b418dcc4a..0337537ecbde7cf17399b90b8a20821aab660854 100644 (file)
@@ -1754,9 +1754,12 @@ common_handle_aligned_attribute (tree *node, tree args, int flags,
       This formally comes from the c++11 specification but we are
       doing it for the GNU attribute syntax as well.  */
     *no_add_attrs = true;
-  else if (TREE_CODE (decl) == FUNCTION_DECL
+  else if (!warn_if_not_aligned_p
+          && TREE_CODE (decl) == FUNCTION_DECL
           && DECL_ALIGN (decl) > (1U << i) * BITS_PER_UNIT)
     {
+      /* Don't warn function alignment here if warn_if_not_aligned_p is
+        true.  It will be warned later.  */
       if (DECL_USER_ALIGN (decl))
        error ("alignment for %q+D was previously specified as %d "
               "and may not be decreased", decl,