aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-05-13 22:24:22 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-05-13 22:24:22 +0200
commit9e37582dfb2ec9e0bc9f0b5d76aa13cd142d6cf0 (patch)
tree91859c02e8db809f3fe22ce9b6cb8ecdbc91de79 /gcc
parent23cb72663051cd3f5a8952d4aa2186d50243b7d0 (diff)
downloadgcc-9e37582dfb2ec9e0bc9f0b5d76aa13cd142d6cf0.zip
gcc-9e37582dfb2ec9e0bc9f0b5d76aa13cd142d6cf0.tar.gz
gcc-9e37582dfb2ec9e0bc9f0b5d76aa13cd142d6cf0.tar.bz2
re PR bootstrap/71071 (ICE --enable-checking=fold : fold check: original tree changed by fold)
PR bootstrap/71071 * fold-const.c (fold_checksum_tree): Allow modification of TYPE_ALIAS_SET during folding. * gcc.dg/pr71071.c: New test. From-SVN: r236222
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/fold-const.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr71071.c12
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1c19f92..5133b37 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2016-05-13 Jakub Jelinek <jakub@redhat.com>
+ PR bootstrap/71071
+ * fold-const.c (fold_checksum_tree): Allow modification
+ of TYPE_ALIAS_SET during folding.
+
* config/i386/i386.c (ix86_compute_frame_layout, ix86_expand_prologue,
ix86_expand_split_stack_prologue): Use HOST_WIDE_INT_C macro.
(ix86_split_to_parts): Likewise. Fix up formatting.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index c4346de..8a7c93e 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -12130,7 +12130,8 @@ fold_checksum_tree (const_tree expr, struct md5_ctx *ctx,
|| 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, struct md5_ctx *ctx,
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;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3858cd4..5f3ff4d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/71071
+ * gcc.dg/pr71071.c: New test.
+
2016-05-13 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/vect/tree-vect.h (check_vect): Handle AVX2,
diff --git a/gcc/testsuite/gcc.dg/pr71071.c b/gcc/testsuite/gcc.dg/pr71071.c
new file mode 100644
index 0000000..582f1f1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr71071.c
@@ -0,0 +1,12 @@
+/* PR bootstrap/71071 */
+/* { dg-do compile } *
+/* { dg-options "-O2" } */
+
+struct S { unsigned b : 1; } a;
+
+void
+foo ()
+{
+ if (a.b)
+ ;
+}