re PR tree-optimization/91236 (ICE in walk_non_aliased_vuses at gcc/tree-ssa-alias...
authorRichard Biener <rguenther@suse.de>
Thu, 25 Jul 2019 06:57:46 +0000 (06:57 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 25 Jul 2019 06:57:46 +0000 (06:57 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-sccvn.c

index 45221a4a7446226ba02c9f674d7783afa22165ef..16757b046a4606befc3f61946a5479760c7742c8 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
 
        * config.gcc (msp430*-*-*): Fix non-GNU style in r273774.
index 9369c36f50eba2b8cddac32ae71433c01ea3f5f8..bafbea27241d7ea79ac4606521a4e64e336a45c8 100644 (file)
@@ -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)))
            {