From 9ab019c64a4114d6fed8f43f319f18c3fc72526d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 10 Jun 2002 23:53:39 +0200 Subject: [PATCH] re PR c/6660 (Typedeffed unnamed structs/unions do not compile with gcc-3.1) PR c/6660 * c-decl.c (grokfield): Allow user defined types if they declare structs or unions for unnamed fields. * gcc.dg/20020527-1.c: New test. From-SVN: r54468 --- gcc/ChangeLog | 6 ++++++ gcc/c-decl.c | 7 +++++-- gcc/testsuite/ChangeLog | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5924df9ecc97..eed9043517ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-06-10 Jakub Jelinek + + PR c/6660 + * c-decl.c (grokfield): Allow user defined types if they declare + structs or unions for unnamed fields. + 2002-06-10 Jakub Jelinek PR c/6809 diff --git a/gcc/c-decl.c b/gcc/c-decl.c index a1e5870727e9..a851ed993600 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -5591,8 +5591,11 @@ grokfield (filename, line, declarator, declspecs, width) { /* This is an unnamed decl. We only support unnamed structs/unions, so check for other things and refuse them. */ - if (TREE_CODE (TREE_VALUE (declspecs)) != RECORD_TYPE - && TREE_CODE (TREE_VALUE (declspecs)) != UNION_TYPE) + tree type = TREE_VALUE (declspecs); + + if (TREE_CODE (type) == TYPE_DECL) + type = TREE_TYPE (type); + if (TREE_CODE (type) != RECORD_TYPE && TREE_CODE (type) != UNION_TYPE) { error ("unnamed fields of type other than struct or union are not allowed"); return NULL_TREE; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index df64e703bf88..8d054012ac36 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -6,6 +6,8 @@ * gcc.dg/20020530-1.c: New test. + * gcc.dg/20020527-1.c: New test. + 2002-05-29 Hans-Peter Nilsson * gcc.c-torture/execute/20020529-1.c: New test. -- 2.47.2