OSDN Git Service

2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 Sep 2006 06:06:55 +0000 (06:06 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 Sep 2006 06:06:55 +0000 (06:06 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116716 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr28952.c [new file with mode: 0644]
gcc/tree-vect-transform.c

index 06c987f..1724238 100644 (file)
@@ -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>
 
 
 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>
 
index ac55cac..5488b9d 100644 (file)
@@ -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
diff --git a/gcc/testsuite/gcc.dg/vect/pr28952.c b/gcc/testsuite/gcc.dg/vect/pr28952.c
new file mode 100644 (file)
index 0000000..c5ef65c
--- /dev/null
@@ -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);
+}
+
+
index 5f1b206..33fdaf7 100644 (file)
@@ -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);