re PR target/20673 (C PCH testsuite assembly comparison failure)
PR c++/20673 * decl.c (grokdeclarator): Correct attribute handling. PR c++/20673 * g++.dg/ext/attrib21.C: New test. From-SVN: r97640
This commit is contained in:
parent
3e0de9d188
commit
f4f18103ee
|
@ -7059,9 +7059,7 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
|
||||
/* Determine the type of the entity declared by recurring on the
|
||||
declarator. */
|
||||
for (;
|
||||
declarator && declarator->kind != cdk_id;
|
||||
declarator = declarator->declarator)
|
||||
for (; declarator; declarator = declarator->declarator)
|
||||
{
|
||||
const cp_declarator *inner_declarator;
|
||||
tree attrs;
|
||||
|
@ -7069,8 +7067,6 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
if (type == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
inner_declarator = declarator->declarator;
|
||||
|
||||
attrs = declarator->attributes;
|
||||
if (attrs)
|
||||
{
|
||||
|
@ -7088,6 +7084,11 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
attr_flags);
|
||||
}
|
||||
|
||||
if (declarator->kind == cdk_id)
|
||||
break;
|
||||
|
||||
inner_declarator = declarator->declarator;
|
||||
|
||||
switch (declarator->kind)
|
||||
{
|
||||
case cdk_array:
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// PR c++/20673
|
||||
|
||||
typedef void *voidp;
|
||||
|
||||
struct S
|
||||
{
|
||||
char a;
|
||||
voidp __attribute__ ((aligned (16))) b;
|
||||
};
|
||||
|
||||
struct T
|
||||
{
|
||||
char a;
|
||||
void *__attribute__ ((aligned (16))) b;
|
||||
};
|
||||
|
||||
int f[sizeof (struct S) != sizeof (struct T) ? -1 : 1];
|
Loading…
Reference in New Issue