re PR tree-optimization/52870 (ICE during SLP pattern matching)
gcc/ PR tree-optimization/52870 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that presumed pattern statement is within the same loop or basic block. gcc/testsuite/ PR tree-optimization/52870 * gcc.dg/vect/pr52870.c: New test. From-SVN: r186272
This commit is contained in:
parent
5973ae1ac2
commit
c0d942d211
@ -1,3 +1,9 @@
|
||||
2012-04-10 Ulrich Weigand <ulrich.weigand@linaro.org>
|
||||
|
||||
PR tree-optimization/52870
|
||||
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that
|
||||
presumed pattern statement is within the same loop or basic block.
|
||||
|
||||
2012-04-10 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* gengtype.c (main): Make uintptr_t a known type.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-04-10 Ulrich Weigand <ulrich.weigand@linaro.org>
|
||||
|
||||
PR tree-optimization/52870
|
||||
* gcc.dg/vect/pr52870.c: New test.
|
||||
|
||||
2012-04-09 Mike Stump <mikestump@comcast.net>
|
||||
|
||||
* g++.dg/cpp0x/udlit-raw-op.C: Don't use CRLF endings.
|
||||
|
17
gcc/testsuite/gcc.dg/vect/pr52870.c
Normal file
17
gcc/testsuite/gcc.dg/vect/pr52870.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -ftree-vectorize" } */
|
||||
|
||||
long
|
||||
test (int *x)
|
||||
{
|
||||
unsigned long sx, xprec;
|
||||
|
||||
sx = *x >= 0 ? *x : -*x;
|
||||
|
||||
xprec = sx * 64;
|
||||
|
||||
if (sx < 16384)
|
||||
foo (sx);
|
||||
|
||||
return xprec;
|
||||
}
|
@ -564,6 +564,16 @@ vect_recog_widen_mult_pattern (VEC (gimple, heap) **stmts,
|
||||
VEC (tree, heap) *dummy_vec;
|
||||
bool op1_ok;
|
||||
bool promotion;
|
||||
loop_vec_info loop_vinfo;
|
||||
struct loop *loop = NULL;
|
||||
bb_vec_info bb_vinfo;
|
||||
stmt_vec_info stmt_vinfo;
|
||||
|
||||
stmt_vinfo = vinfo_for_stmt (last_stmt);
|
||||
loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
|
||||
bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo);
|
||||
if (loop_vinfo)
|
||||
loop = LOOP_VINFO_LOOP (loop_vinfo);
|
||||
|
||||
if (!is_gimple_assign (last_stmt))
|
||||
return NULL;
|
||||
@ -635,6 +645,11 @@ vect_recog_widen_mult_pattern (VEC (gimple, heap) **stmts,
|
||||
|| gimple_assign_rhs_code (use_stmt) != NOP_EXPR)
|
||||
return NULL;
|
||||
|
||||
if (!gimple_bb (use_stmt)
|
||||
|| (loop && !flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
|
||||
|| (!loop && gimple_bb (use_stmt) != BB_VINFO_BB (bb_vinfo)))
|
||||
return NULL;
|
||||
|
||||
use_lhs = gimple_assign_lhs (use_stmt);
|
||||
use_type = TREE_TYPE (use_lhs);
|
||||
if (!INTEGRAL_TYPE_P (use_type)
|
||||
|
Loading…
x
Reference in New Issue
Block a user