mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-23 18:39:48 +08:00
re PR tree-optimization/26360 (Autovectorization of char -> int loop gets ICE)
Changelog: 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. Co-Authored-By: Victor Kaplansky <victork@il.ibm.com> From-SVN: r114386
This commit is contained in:
parent
6690a9e079
commit
a8b2849215
@ -1,3 +1,10 @@
|
||||
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>
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
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
|
||||
|
@ -115,6 +115,12 @@ lappend DEFAULT_VECTCFLAGS "-fdump-tree-dceloop-details"
|
||||
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\]]] \
|
||||
|
@ -1467,7 +1467,7 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo)
|
||||
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);
|
||||
@ -1475,10 +1475,28 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo)
|
||||
|
||||
if (stmt_info)
|
||||
{
|
||||
/* 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);
|
||||
|
||||
/* Remove dead "pattern stmts". */
|
||||
if (remove_stmt_p)
|
||||
bsi_remove (&si, true);
|
||||
}
|
||||
bsi_next (&si);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user