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:
Mark Mitchell 2005-04-05 17:35:54 +00:00
parent 3e0de9d188
commit f4f18103ee
2 changed files with 23 additions and 5 deletions

View File

@ -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:

View File

@ -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];