re PR tree-optimization/28952 (tree check: expected class 'expression', have 'exceptional' (ssa_name) in vectorizable_condition, at tree-vect-transform.c:2122)
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/28952 * tree-vect-transform.c (vectorizable_condition): Move the check for the type after the check for simple condition. 2006-09-05 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/28952 * gcc.dg/vect/pr28952.c: New test. From-SVN: r116716
This commit is contained in:
parent
5df1740de4
commit
10b96810c0
4 changed files with 49 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/28952
|
||||
* tree-vect-transform.c (vectorizable_condition): Move the check
|
||||
for the type after the check for simple condition.
|
||||
|
||||
2006-09-05 J"orn Rennecke <joern.rennecke@st.com>
|
||||
Kaz Kojima <kkojima@gcc.gnu.org>
|
||||
|
||||
|
@ -20,10 +26,10 @@
|
|||
|
||||
2006-09-05 Anatoly Sokolov <aesok@post.ru>
|
||||
|
||||
* config/avr/avr.c (avr_mcu_types): Add support for at90pwm1 device.
|
||||
* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
|
||||
* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
|
||||
(avr_rtx_costs): Mark 'outer_code' argument with ATTRIBUTE_UNUSED.
|
||||
* config/avr/avr.c (avr_mcu_types): Add support for at90pwm1 device.
|
||||
* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
|
||||
* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
|
||||
(avr_rtx_costs): Mark 'outer_code' argument with ATTRIBUTE_UNUSED.
|
||||
|
||||
2006-09-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/28952
|
||||
* gcc.dg/vect/pr28952.c: New test.
|
||||
|
||||
2006-09-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/28900
|
||||
|
|
31
gcc/testsuite/gcc.dg/vect/pr28952.c
Normal file
31
gcc/testsuite/gcc.dg/vect/pr28952.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
/* We were ICE because we wanted to check the type of the
|
||||
elements of a conditional before we knew it was a conditional. */
|
||||
|
||||
struct player_spaceship
|
||||
{
|
||||
_Bool structure[32];
|
||||
};
|
||||
struct player
|
||||
{
|
||||
struct player_spaceship spaceship;
|
||||
};
|
||||
struct packet_spaceship_info
|
||||
{
|
||||
char structure[32 + 1];
|
||||
};
|
||||
send_spaceship_info (void)
|
||||
{
|
||||
int j;
|
||||
struct player *pplayer;
|
||||
struct packet_spaceship_info info;
|
||||
struct player_spaceship *ship = &pplayer->spaceship;
|
||||
for (j = 0; j < 32; j++)
|
||||
{
|
||||
info.structure[j] = ship->structure[j] ? '1' : '0';
|
||||
}
|
||||
lsend_packet_spaceship_info (&info);
|
||||
}
|
||||
|
||||
|
|
@ -2117,14 +2117,14 @@ vectorizable_condition (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt)
|
|||
then_clause = TREE_OPERAND (op, 1);
|
||||
else_clause = TREE_OPERAND (op, 2);
|
||||
|
||||
if (!vect_is_simple_cond (cond_expr, loop_vinfo))
|
||||
return false;
|
||||
|
||||
/* We do not handle two different vector types for the condition
|
||||
and the values. */
|
||||
if (TREE_TYPE (TREE_OPERAND (cond_expr, 0)) != TREE_TYPE (vectype))
|
||||
return false;
|
||||
|
||||
if (!vect_is_simple_cond (cond_expr, loop_vinfo))
|
||||
return false;
|
||||
|
||||
if (TREE_CODE (then_clause) == SSA_NAME)
|
||||
{
|
||||
tree then_def_stmt = SSA_NAME_DEF_STMT (then_clause);
|
||||
|
|
Loading…
Add table
Reference in a new issue