On Fri, Aug 25, 2017 at 10:15 AM, Martin Sebor <mse...@gmail.com> wrote: > On 08/21/2017 06:21 AM, H.J. Lu wrote: >> >> 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. >> >> OK for trunk? >> >> H.J. >> -- >> * c-attribs.c (common_handle_aligned_attribute): Don't warn >> function alignment if warn_if_not_aligned_p is true. >> --- >> gcc/c-family/c-attribs.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c >> index 5f79468407f..78969532543 100644 >> --- a/gcc/c-family/c-attribs.c >> +++ b/gcc/c-family/c-attribs.c >> @@ -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, > > > Your comment refers to warning but the code here uses error(). > That raises two questions for me: a) will the later diagnostic > really be a warning or an error, and if a warning, under what > option will it be issued? and b) why is an error appropriate > here when a warning is appropriate elsewhere (most other > attribute conflicts are at present diagnosed with -Wattributes).
It can be changed to warning. > My main motivation for these questions is to understand the > rationale for warning for vs rejecting conflicts so that > a consistent general solution can be implemented for all > attributes (i.e., along the lines of my patch here: > https://gcc.gnu.org/ml/gcc-patches/2017-08/msg01457.html) > > Martin -- H.J.