re PR tree-optimization/38997 (-ftree-loop-distribution ICEs)
authorKazu Hirata <kazu@codesourcery.com>
Wed, 28 Jan 2009 18:16:57 +0000 (18:16 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Wed, 28 Jan 2009 18:16:57 +0000 (18:16 +0000)
gcc/
PR tree-optimization/38997
* tree-loop-distribution.c (generate_memset_zero): Use
POINTER_PLUS_EXPR for a pointer addition.

gcc/testsuite/
PR tree-optimization/38997
* gcc.dg/tree-ssa/pr38997.c: New.

From-SVN: r143739

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/tree-loop-distribution.c

index de59cdf14654afc8996287242736f4b39b0e3e96..da53b53358b3337942b8809f0d7e39b74a03c2c8 100644 (file)
@@ -1,3 +1,9 @@
+2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR tree-optimization/38997
+       * tree-loop-distribution.c (generate_memset_zero): Use
+       POINTER_PLUS_EXPR for a pointer addition.
+
 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * config/s390/s390.md (bswap<mode>2): New pattern added.
index d3b7034f21af728f0c9ed7ac457e376c09f66377..d6038a1ef282b8ec6bcce8a269ba6a832bc686b7 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR tree-optimization/38997
+       * gcc.dg/tree-ssa/pr38997.c: New.
+
 2009-01-28  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/38926
index 745957fcea29ca1d6d2bd971712b1d143e318871..1463bee93d3b58ca64fc9b63b815911542e6f05d 100644 (file)
@@ -256,10 +256,15 @@ generate_memset_zero (gimple stmt, tree op0, tree nb_iter,
   /* Test for a positive stride, iterating over every element.  */
   if (integer_zerop (fold_build2 (MINUS_EXPR, integer_type_node, DR_STEP (dr),
                                  TYPE_SIZE_UNIT (TREE_TYPE (op0)))))
-    addr_base = fold_build2 (PLUS_EXPR, TREE_TYPE (DR_BASE_ADDRESS (dr)),
-                            DR_BASE_ADDRESS (dr), 
-                            size_binop (PLUS_EXPR,
-                                        DR_OFFSET (dr), DR_INIT (dr)));
+    {
+      tree offset = fold_convert (sizetype,
+                                 size_binop (PLUS_EXPR,
+                                             DR_OFFSET (dr),
+                                             DR_INIT (dr)));
+      addr_base = fold_build2 (POINTER_PLUS_EXPR,
+                              TREE_TYPE (DR_BASE_ADDRESS (dr)),
+                              DR_BASE_ADDRESS (dr), offset);
+    }
 
   /* Test for a negative stride, iterating over every element.  */
   else if (integer_zerop (fold_build2 (PLUS_EXPR, integer_type_node,