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



--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-28 
08:36:28 UTC ---

(In reply to comment #4)

> Created attachment 28293 [details]

> gcc48-pr54713.patch

> 

> Updated patch.  I had to make the CONSTRUCTOR checking less strict, in

> particular there are CONSTRUCTORS with (consecutive) indexes as well as NULL

> indexes, there are CONSTRUCTORS with less than nunits elements even when the

> elements are scalar.



Ugh, less than nunits is probably ok for GENERIC but in GIMPLE we really

want trailing zeros explicit ... :/  Thus, if we need to "gimplify"

vector constructors we can as well clear their indexes?



> But even with all this I'm still getting gfortran.dg/loc_2.f90 -O3 ICEs,

> apparently SLP creates vector CONSTRUCTOR with type integer(kind=4) vector, 
> but

> elements logical(kind=4) (i.e. same TYPE_MODE, but INTEGER_TYPE vs.

> BOOLEAN_TYPE.  Shall I make the verification even less strict (check TYPE_MODE

> instead of useless_type_conversion?), or shall we fix the vectorizer?



The vectorizer needs to be fixed.  See the comment in

get_vectype_for_scalar_type_and_size:



  /* For vector types of elements whose mode precision doesn't

     match their types precision we use a element type of mode

     precision.  The vectorization routines will have to make sure

     they support the proper result truncation/extension.

     We also make sure to build vector types with INTEGER_TYPE

     component type only.  */



> Shouldn't I split the patch into the bugfixes + testcases and submit it before

> the verification, so that the latter can be done more slowly?



Yes, I think separate patches would be prefered.

Reply via email to