]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR lto/41058 (FAIL: ext/pb_ds/regression/hash_data_map_rand.cc)
authorRichard Guenther <rguenther@suse.de>
Fri, 28 Aug 2009 19:36:05 +0000 (19:36 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 28 Aug 2009 19:36:05 +0000 (19:36 +0000)
2009-08-28  Richard Guenther  <rguenther@suse.de>

PR lto/41058
* cp-gimplify.c (cp_genericize_r): Do not leak zero-sized stores
into the generic IL.

From-SVN: r151176

gcc/cp/ChangeLog
gcc/cp/cp-gimplify.c

index bb5a61520d6776228df2aa969c8faf1f121509da..90a5c595746617bdd49efb62a633dbf0516e8506 100644 (file)
@@ -1,3 +1,9 @@
+2009-08-28  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/41058
+       * cp-gimplify.c (cp_genericize_r): Do not leak zero-sized stores
+       into the generic IL.
+
 2009-08-27  Richard Guenther  <rguenther@suse.de>
 
        * class.c (build_vtbl_ref_1): Remove excess vertical space.
index b4d36de44cabd5f308710176f23b5c8a7a00b3ba..52c12ebc1875e13fa6ff211cedb103be69096239 100644 (file)
@@ -853,6 +853,15 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
       *walk_subtrees = 0;
     }
 
+  else if (TREE_CODE (stmt) == MODIFY_EXPR
+          && (integer_zerop (cp_expr_size (TREE_OPERAND (stmt, 0)))
+              || integer_zerop (cp_expr_size (TREE_OPERAND (stmt, 1)))))
+    {
+      *stmt_p = build2 (COMPOUND_EXPR, TREE_TYPE (stmt),
+                       TREE_OPERAND (stmt, 0),
+                       TREE_OPERAND (stmt, 1));
+    }
+
   pointer_set_insert (p_set, *stmt_p);
 
   return NULL;