On May 13, 2016 7:22:37 PM GMT+02:00, Jakub Jelinek <ja...@redhat.com> wrote: >Hi! > >Since a recent change, TYPE_ALIAS_SET of types can change during >folding. >This patch arranges for it not to be checksummed. > >Bootstrapped/regtested on x86_64-linux and i686-linux (normal >bootstrap) >and built (nonbootstrap) + regtested the >--enable-checking=yes,extra,fold,rtl version (previously it wouldn't >build >even libgcc). > >Ok for trunk?
OK. Richard. >2016-05-13 Jakub Jelinek <ja...@redhat.com> > > PR bootstrap/71071 > * fold-const.c (fold_checksum_tree): Allow modification > of TYPE_ALIAS_SET during folding. > > * gcc.dg/pr71071.c: New test. > >--- gcc/fold-const.c.jj 2016-05-13 13:58:12.381020172 +0200 >+++ gcc/fold-const.c 2016-05-13 14:22:51.724912335 +0200 >@@ -12130,7 +12130,8 @@ fold_checksum_tree (const_tree expr, str > || TYPE_REFERENCE_TO (expr) > || TYPE_CACHED_VALUES_P (expr) > || TYPE_CONTAINS_PLACEHOLDER_INTERNAL (expr) >- || TYPE_NEXT_VARIANT (expr))) >+ || TYPE_NEXT_VARIANT (expr) >+ || TYPE_ALIAS_SET_KNOWN_P (expr))) > { > /* Allow these fields to be modified. */ > tree tmp; >@@ -12140,6 +12141,7 @@ fold_checksum_tree (const_tree expr, str > TYPE_POINTER_TO (tmp) = NULL; > TYPE_REFERENCE_TO (tmp) = NULL; > TYPE_NEXT_VARIANT (tmp) = NULL; >+ TYPE_ALIAS_SET (tmp) = -1; > if (TYPE_CACHED_VALUES_P (tmp)) > { > TYPE_CACHED_VALUES_P (tmp) = 0; >--- gcc/testsuite/gcc.dg/pr71071.c.jj 2016-05-13 14:23:39.528278177 >+0200 >+++ gcc/testsuite/gcc.dg/pr71071.c 2016-05-13 14:22:08.000000000 +0200 >@@ -0,0 +1,12 @@ >+/* PR bootstrap/71071 */ >+/* { dg-do compile } * >+/* { dg-options "-O2" } */ >+ >+struct S { unsigned b : 1; } a; >+ >+void >+foo () >+{ >+ if (a.b) >+ ; >+} > > Jakub