summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-sccvn.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-07-25 06:57:46 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-07-25 06:57:46 +0000
commit599331c858294dec6ac94400e63d275c4836607f (patch)
tree3a0942185b334ece9867e390ceb6af35d1945837 /gcc/tree-ssa-sccvn.c
parentb631bdb3c16e85f35d38e39b3d315c35e4a5747c (diff)
re PR tree-optimization/91236 (ICE in walk_non_aliased_vuses at gcc/tree-ssa-alias.c:3395 on aarch64)
2019-07-25 Richard Biener <rguenther@suse.de> PR tree-optimization/91236 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix size of CONSTRUCTOR write. Fix buffer size we pass to native_encode_expr. From-SVN: r273787
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r--gcc/tree-ssa-sccvn.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 9369c36f50e..bafbea27241 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -1818,7 +1818,7 @@ vn_walk_cb_data::push_partial_def (const pd_data &pd, tree vuse,
if (TREE_CODE (pd.rhs) == CONSTRUCTOR)
/* Empty CONSTRUCTOR. */
memset (buffer + MAX (0, pd.offset),
- 0, MIN ((HOST_WIDE_INT)sizeof (buffer),
+ 0, MIN ((HOST_WIDE_INT)sizeof (buffer) - MAX (0, pd.offset),
pd.size + MIN (0, pd.offset)));
else
{
@@ -1833,7 +1833,7 @@ vn_walk_cb_data::push_partial_def (const pd_data &pd, tree vuse,
pad = GET_MODE_SIZE (mode) - pd.size;
}
len = native_encode_expr (pd.rhs, buffer + MAX (0, pd.offset),
- sizeof (buffer - MAX (0, pd.offset)),
+ sizeof (buffer) - MAX (0, pd.offset),
MAX (0, -pd.offset) + pad);
if (len <= 0 || len < (pd.size - MAX (0, -pd.offset)))
{