From: Joseph Myers Date: Tue, 5 Jul 2005 21:19:16 +0000 (+0100) Subject: re PR c/22308 (Failure to diagnose violation of constraint 6.516p2) X-Git-Tag: releases/gcc-3.4.5~340 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96bb743c910332c6e87aed1b8ff092a05840fe0b;p=thirdparty%2Fgcc.git re PR c/22308 (Failure to diagnose violation of constraint 6.516p2) PR c/22308 * c-decl.c (finish_struct): Also copy C_TYPE_FIELDS_READONLY, C_TYPE_FIELDS_VOLATILE and C_TYPE_VARIABLE_SIZE to type variants. testsuite: * gcc.dg/pr22308-1.c: New test. From-SVN: r101636 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5371b1c4266d..0d740abb9224 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-07-05 Joseph S. Myers + + PR c/22308 + * c-decl.c (finish_struct): Also copy C_TYPE_FIELDS_READONLY, + C_TYPE_FIELDS_VOLATILE and C_TYPE_VARIABLE_SIZE to type variants. + 2005-06-14 Eric Botcazou PR target/20301 diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 619b221063b9..8d717733ddc3 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -5126,6 +5126,9 @@ finish_struct (tree t, tree fieldlist, tree attributes) TYPE_LANG_SPECIFIC (x) = TYPE_LANG_SPECIFIC (t); TYPE_ALIGN (x) = TYPE_ALIGN (t); TYPE_USER_ALIGN (x) = TYPE_USER_ALIGN (t); + C_TYPE_FIELDS_READONLY (x) = C_TYPE_FIELDS_READONLY (t); + C_TYPE_FIELDS_VOLATILE (x) = C_TYPE_FIELDS_VOLATILE (t); + C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t); } /* If this was supposed to be a transparent union, but we can't diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5792daea7c1d..7f7f494658df 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-07-05 Joseph S. Myers + + PR c/22308 + * gcc.dg/pr22308-1.c: New test. + 2005-06-13 Nathan Sidwell PR c++/20789 diff --git a/gcc/testsuite/gcc.dg/pr22308-1.c b/gcc/testsuite/gcc.dg/pr22308-1.c index bcbb294c2cbd..ff849151d161 100644 --- a/gcc/testsuite/gcc.dg/pr22308-1.c +++ b/gcc/testsuite/gcc.dg/pr22308-1.c @@ -9,5 +9,5 @@ struct foo { const int z; }; void bar (void) { - t = s; /* { dg-error "error: assignment of read-only variable 't'" } */ + t = s; /* { dg-error "error: assignment of read-only variable `t'" } */ }