2015-02-25 Richard Biener <rguenther@suse.de>
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Feb 2015 13:36:00 +0000 (13:36 +0000)
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Feb 2015 13:36:00 +0000 (13:36 +0000)
Kai Tietz  <ktietz@redhat.com>

PR tree-optimization/61917
* tree-vect-loop.c (vectorizable_reduction): Allow
vect_internal_def without reduction to exit graceful.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220966 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-vect-loop.c

index e603411..d4304cd 100644 (file)
@@ -1,3 +1,10 @@
+2015-02-25  Richard Biener  <rguenther@suse.de>
+       Kai Tietz  <ktietz@redhat.com>
+
+       PR tree-optimization/61917
+       * tree-vect-loop.c (vectorizable_reduction): Allow
+       vect_internal_def without reduction to exit graceful.
+
 2015-02-25  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/65196
index 3e7c701..5a151fc 100644 (file)
@@ -4981,6 +4981,12 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
   if (!vectype_in)
     vectype_in = tem;
   gcc_assert (is_simple_use);
+  if (!found_nested_cycle_def)
+    reduc_def_stmt = def_stmt;
+
+  if (gimple_code (reduc_def_stmt) != GIMPLE_PHI)
+    return false;
+
   if (!(dt == vect_reduction_def
        || dt == vect_nested_cycle
        || ((dt == vect_internal_def || dt == vect_external_def
@@ -4993,10 +4999,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
       gcc_assert (orig_stmt);
       return false;
     }
-  if (!found_nested_cycle_def)
-    reduc_def_stmt = def_stmt;
 
-  gcc_assert (gimple_code (reduc_def_stmt) == GIMPLE_PHI);
   if (orig_stmt)
     gcc_assert (orig_stmt == vect_is_simple_reduction (loop_vinfo,
                                                        reduc_def_stmt,