[PATCH] c++/58109 - alignas() fails to compile with constant expression
Jason Merrill
jason@redhat.com
Fri Jan 22 20:41:00 GMT 2016
On 01/20/2016 06:04 PM, Martin Sebor wrote:
>> Right. The problem is this code in is_late_template_attribute:
>>
>>> /* If the first attribute argument is an identifier, only consider
>>> second and following arguments. Attributes like mode, format,
>>> cleanup and several target specific attributes aren't late
>>> just because they have an IDENTIFIER_NODE as first
>>> argument. */
>>> if (arg == args && identifier_p (t))
>>> continue;
>>
>> It shouldn't skip an initial identifier if !attribute_takes_identifier_p.
>
> That seems backwards. I expected attribute_takes_identifier_p()
> to return true for attribute aligned since the attribute does
> take one.
There are some attributes (mode, format, cleanup) that have magic
handling of identifiers; aligned treats its argument as an expression
whether or not that expression takes the form of an identifier.
> In any case, I changed the patch as you suggest and retested it
> on x86_64. I saw the email about stage 3 having ended but I'm
> not sure it applies to changes that are still in progress.
I wouldn't think so; certainly not for something this simple. The patch
is OK.
Jason
More information about the Gcc-patches
mailing list