aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-sccvn.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b3538c4..b8e7129 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-24 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/68221
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
+ use mem_ref_offset.
+
2015-11-24 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/68381
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 9a55b5b..0c7fd72 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -750,8 +750,11 @@ copy_reference_ops_from_ref (tree ref, vec<vn_reference_op_s> *result)
case MEM_REF:
/* The base address gets its own vn_reference_op_s structure. */
temp.op0 = TREE_OPERAND (ref, 1);
- if (tree_fits_shwi_p (TREE_OPERAND (ref, 1)))
- temp.off = tree_to_shwi (TREE_OPERAND (ref, 1));
+ {
+ offset_int off = mem_ref_offset (ref);
+ if (wi::fits_shwi_p (off))
+ temp.off = off.to_shwi ();
+ }
temp.clique = MR_DEPENDENCE_CLIQUE (ref);
temp.base = MR_DEPENDENCE_BASE (ref);
temp.reverse = REF_REVERSE_STORAGE_ORDER (ref);