aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-07-11 13:32:51 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-07-11 13:32:51 +0000
commitf51606c71ab31d906d499108b1a2b8d8e45d9e06 (patch)
tree807e81c9fa47e49720195efa23b1e80b1ac00e6e /gcc
parenta442a050ad11c772f865980d578709af38d876e8 (diff)
downloadgcc-f51606c71ab31d906d499108b1a2b8d8e45d9e06.zip
gcc-f51606c71ab31d906d499108b1a2b8d8e45d9e06.tar.gz
gcc-f51606c71ab31d906d499108b1a2b8d8e45d9e06.tar.bz2
re PR bootstrap/71816 (bootstrap broken on multiple targets)
2016-07-11 Richard Biener <rguenther@suse.de> PR tree-optimization/71816 * tree-ssa-pre.c (compute_avail): Adjust alignment of ref rather than replacing all of its operands. * gcc.dg/torture/pr71816.c: New testcase. From-SVN: r238208
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr71816.c21
-rw-r--r--gcc/tree-ssa-pre.c11
4 files changed, 36 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0453ada..d0dde93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71816
+ * tree-ssa-pre.c (compute_avail): Adjust alignment of ref rather
+ than replacing all of its operands.
+
2016-07-11 Alan Modra <amodra@gmail.com>
* config/rs6000/rs6000.md (UNSPEC_DOLOOP): New unspec.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 63333ba..1d9dc5b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-07-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71816
+ * gcc.dg/torture/pr71816.c: New testcase.
+
2016-07-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71783
diff --git a/gcc/testsuite/gcc.dg/torture/pr71816.c b/gcc/testsuite/gcc.dg/torture/pr71816.c
new file mode 100644
index 0000000..bdd5b1b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr71816.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+void *ext2fs_resize_mem_p;
+struct ext2_icount_el {
+ int ino;
+} * insert_icount_el_icount_1;
+int insert_icount_el_icount, insert_icount_el_new_size;
+void *memcpy();
+void *realloc();
+int ext2fs_resize_mem(void *p1) {
+ int size = 0;
+ memcpy(&ext2fs_resize_mem_p, p1, sizeof(ext2fs_resize_mem_p));
+ realloc(&ext2fs_resize_mem_p, size);
+ return 0;
+}
+struct ext2_icount_el *insert_icount_el() {
+ if (insert_icount_el_icount)
+ insert_icount_el_new_size = insert_icount_el_icount_1[0].ino;
+ ext2fs_resize_mem(&insert_icount_el_icount_1);
+ return 0;
+}
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 0c97f4f..9964c55 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3791,13 +3791,9 @@ compute_avail (void)
|| ref1->opcode == MEM_REF)
&& (TYPE_ALIGN (ref1->type)
> TYPE_ALIGN (ref2->type)))
- {
- ref->operands.release ();
- ref->operands = operands;
- ref1 = ref2;
- }
- else
- operands.release ();
+ ref1->type
+ = build_aligned_type (ref1->type,
+ TYPE_ALIGN (ref2->type));
/* TBAA behavior is an obvious part so make sure
that the hashtable one covers this as well
by adjusting the ref alias set and its base. */
@@ -3824,6 +3820,7 @@ compute_avail (void)
ref1->op2 = fold_convert (ptr_type_node,
ref1->op2);
}
+ operands.release ();
result = pre_expr_pool.allocate ();
result->kind = REFERENCE;