aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
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/tree-ssa-pre.c
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/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c11
1 files changed, 4 insertions, 7 deletions
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;