Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2015-05-22  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/66251
        * tree-vect-stmts.c (vectorizable_conversion): Properly
        set STMT_VINFO_VEC_STMT even for the SLP case.

        * gfortran.fortran-torture/compile/pr66251.f90: New testcase.

Index: gcc/tree-vect-stmts.c
===================================================================
--- gcc/tree-vect-stmts.c       (revision 223529)
+++ gcc/tree-vect-stmts.c       (working copy)
@@ -3964,14 +3964,12 @@ vectorizable_conversion (gimple stmt, gi
 
              if (slp_node)
                SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+
+             if (!prev_stmt_info)
+               STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
              else
-               {
-                 if (!prev_stmt_info)
-                   STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
-                 else
-                   STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
-                 prev_stmt_info = vinfo_for_stmt (new_stmt);
-               }
+               STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+             prev_stmt_info = vinfo_for_stmt (new_stmt);
            }
        }
 
Index: gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90
===================================================================
--- gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90  (revision 0)
+++ gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90  (working copy)
@@ -0,0 +1,7 @@
+SUBROUTINE dbcsr_data_convert (n)
+  COMPLEX(KIND=4), DIMENSION(:), POINTER :: s_data_c
+  COMPLEX(KIND=8), DIMENSION(:), POINTER :: t_data_z
+  t_data_z(1:n) = CMPLX(s_data_c(1:n), KIND=8)
+  CALL foo()
+END SUBROUTINE dbcsr_data_convert
+

Reply via email to