PR tree-optimization/26360
* tree-vectorizer.c (destroy_loop_vec_info): Remove (dead) pattern
stmts.
testsuite/Changelog:
PR tree-optimizations/26360
* gcc.dg/vect/vect.exp: Compile tests prefixed with "no-tree-dce"
with -fno-tree-dce.
* gcc.dg/vect/no-tree-dce-pr26360.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114386
138bc75d-0d04-0410-961f-
82ee72b054a4
+2006-06-05 Dorit Nuzman <dorit@il.ibm.com>
+ Victor Kaplansky <victork@il.ibm.com>
+
+ PR tree-optimization/26360
+ * tree-vectorizer.c (destroy_loop_vec_info): Remove (dead) pattern
+ stmts.
+
2006-06-04 Roger Sayle <roger@eyesopen.com>
Andrew Pinski <pinskia@physics.uc.edu>
2006-06-04 Roger Sayle <roger@eyesopen.com>
Andrew Pinski <pinskia@physics.uc.edu>
+2006-06-05 Dorit Nuzman <dorit@il.ibm.com>
+ Victor Kaplansky <victork@il.ibm.com>
+
+ PR tree-optimizations/26360
+ * gcc.dg/vect/vect.exp: Compile tests prefixed with "no-tree-dce"
+ with -fno-tree-dce.
+ * gcc.dg/vect/no-tree-dce-pr26360.c: New test.
+
2006-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/14067
2006-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/14067
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/dump-tree-dceloop-*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/dump-tree-dceloop-*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS
+# -fno-tree-dce tests
+set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
+lappend DEFAULT_VECTCFLAGS "-fno-tree-dce"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-dce-*.\[cS\]]] \
+ "" $DEFAULT_VECTCFLAGS
+
# With -Os
lappend DEFAULT_VECTCFLAGS "-Os"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \
# With -Os
lappend DEFAULT_VECTCFLAGS "-Os"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \
set_stmt_info (ann, NULL);
}
set_stmt_info (ann, NULL);
}
- for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si))
+ for (si = bsi_start (bb); !bsi_end_p (si); )
{
tree stmt = bsi_stmt (si);
stmt_ann_t ann = stmt_ann (stmt);
{
tree stmt = bsi_stmt (si);
stmt_ann_t ann = stmt_ann (stmt);
+ /* Check if this is a "pattern stmt" (introduced by the
+ vectorizer during the pattern recognition pass). */
+ bool remove_stmt_p = false;
+ tree orig_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
+ if (orig_stmt)
+ {
+ stmt_vec_info orig_stmt_info = vinfo_for_stmt (orig_stmt);
+ if (orig_stmt_info
+ && STMT_VINFO_IN_PATTERN_P (orig_stmt_info))
+ remove_stmt_p = true;
+ }
+
+ /* Free stmt_vec_info. */
VEC_free (dr_p, heap, STMT_VINFO_SAME_ALIGN_REFS (stmt_info));
free (stmt_info);
set_stmt_info ((tree_ann_t)ann, NULL);
VEC_free (dr_p, heap, STMT_VINFO_SAME_ALIGN_REFS (stmt_info));
free (stmt_info);
set_stmt_info ((tree_ann_t)ann, NULL);
+
+ /* Remove dead "pattern stmts". */
+ if (remove_stmt_p)
+ bsi_remove (&si, true);