[Bug tree-optimization/60823] [4.9/4.10 Regression] ICE in gimple_expand_cfg, at cfgexpand.c:5644

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon May 19 07:34:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60823

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to vincenzo Innocente from comment #9)
> sorry fro squatting this thread:
> I noticed that compiling the test case for haswell it does not make use of
> umm registers
> c++ -std=c++11 -Ofast -fopenmp -S simdCloning.cc -march=haswell;  grep ymm
> simdCloning.s
> 	vmovupd	%ymm0, -80(%rbp)
> 	vmovupd	%ymm1, -48(%rbp)
> 	vmovapd	%ymm0, -80(%rbp)
> 	vmovapd	%ymm1, -48(%rbp)
> 	vmovdqa	-112(%rbp), %ymm0
> 
> changing int to long long does not make any effect...
> same changing double to float and widening the simdlen to 8.
> 
> any "good" reason?
> should I open a new bug report (tree-optimization I suppose)?

If you look into the -fdump-tree-vect-details dump, you'll see it is not
vectorized at all, I guess the primary issue is the nested loop in there, I
guess you were expecting that the 4 or 8 outer loop (the compiler added)
iterations will be vectorized and just get execute the inner loop which has
fixed number of iterations and doesn't have any conditionals.  But that is not
what our vectorizer supports unfortunately, for nested loops it instead
attempts to vectorize consecutive iterations of the inner loop (which doesn't
of course work here, because the iterations depend on each other).


More information about the Gcc-bugs mailing list