------- Comment #2 from dorit at gcc dot gnu dot org  2007-09-10 09:08 -------
Testing this patch (it's a bug in the fix for PR33301. I accidentally treated
TYPE_SIZE_UNIT as a constant, whereas it's really a tree...):

Index: tree-vect-analyze.c
===================================================================
*** tree-vect-analyze.c (revision 128322)
--- tree-vect-analyze.c (working copy)
*************** vect_determine_vectorization_factor (loo
*** 242,252 ****
              operation = GIMPLE_STMT_OPERAND (stmt, 1);
              if (TREE_CODE (operation) == NOP_EXPR
                  || TREE_CODE (operation) == CONVERT_EXPR
!                 || TREE_CODE (operation) ==  WIDEN_MULT_EXPR)
                {
                  tree rhs_type = TREE_TYPE (TREE_OPERAND (operation, 0));
!                 if (TYPE_SIZE_UNIT (rhs_type) < TYPE_SIZE_UNIT (scalar_type))
!                   scalar_type = TREE_TYPE (TREE_OPERAND (operation, 0));
                }

              if (vect_print_dump_info (REPORT_DETAILS))
--- 242,253 ----
              operation = GIMPLE_STMT_OPERAND (stmt, 1);
              if (TREE_CODE (operation) == NOP_EXPR
                  || TREE_CODE (operation) == CONVERT_EXPR
!                 || TREE_CODE (operation) == WIDEN_MULT_EXPR)
                {
                  tree rhs_type = TREE_TYPE (TREE_OPERAND (operation, 0));
!                 if (TREE_INT_CST_LOW (TYPE_SIZE_UNIT (rhs_type)) <
!                     TREE_INT_CST_LOW (TYPE_SIZE_UNIT (scalar_type)))
!                   scalar_type = rhs_type;
                }

              if (vect_print_dump_info (REPORT_DETAILS))


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33373

Reply via email to