aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-02-22 15:00:39 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-02-22 15:00:39 +0000
commit76dd203e1b51267cbb227a5e2ffab5f20a56f62d (patch)
tree9d81c3cc45d0d8e13bfcdf4a2aeeb876b47e10e0 /gcc/tree-ssa-pre.c
parenta9c774d2ae7c0ae983aa33fd53d34ef054dbee5a (diff)
downloadgcc-76dd203e1b51267cbb227a5e2ffab5f20a56f62d.zip
gcc-76dd203e1b51267cbb227a5e2ffab5f20a56f62d.tar.gz
gcc-76dd203e1b51267cbb227a5e2ffab5f20a56f62d.tar.bz2
re PR middle-end/79673 (GIMPLE verification fails when compiling code with __seg_gs)
2017-02-22 Richard Biener <rguenther@suse.de> PR tree-optimization/79673 * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off irrelevant address-space qualifiers and avoiding a ADDR_SPACE_CONVERT_EXPR from fold_convert. * gcc.target/i386/pr79673.c: New testcase. From-SVN: r245649
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 681c412..7fce0d3 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3986,21 +3986,21 @@ compute_avail (void)
{
ref->set = set;
if (ref1->opcode == MEM_REF)
- ref1->op0 = fold_convert (TREE_TYPE (ref2->op0),
- ref1->op0);
+ ref1->op0 = wide_int_to_tree (TREE_TYPE (ref2->op0),
+ ref1->op0);
else
- ref1->op2 = fold_convert (TREE_TYPE (ref2->op2),
- ref1->op2);
+ ref1->op2 = wide_int_to_tree (TREE_TYPE (ref2->op2),
+ ref1->op2);
}
else
{
ref->set = 0;
if (ref1->opcode == MEM_REF)
- ref1->op0 = fold_convert (ptr_type_node,
- ref1->op0);
+ ref1->op0 = wide_int_to_tree (ptr_type_node,
+ ref1->op0);
else
- ref1->op2 = fold_convert (ptr_type_node,
- ref1->op2);
+ ref1->op2 = wide_int_to_tree (ptr_type_node,
+ ref1->op2);
}
operands.release ();