[Bug tree-optimization/82436] 465.tonto ICE in vect_get_slp_vect_defs, at tree-vect-slp.c:3410
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Oct 5 11:03:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82436
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Doesn't reproduce with
struct reflection_type
{
int h;
int k;
int l;
double f_exp;
double f_sigma;
_Complex double f_calc;
double f_pred;
double i_exp;
double i_sigma;
double i_pred;
};
struct { void *data; int offset; int stride; int span; } ext_refs;
double y, w;
void foo (struct reflection_type *r, int n, unsigned s)
{
y = 0;
w = 0;
for (int i = 1; i < n; ++i)
{
struct reflection_type *x = (struct reflection_type *)(ext_refs.data +
(ext_refs.offset + ext_refs.stride * i) * ext_refs.span);
double fpred = x->f_pred;
double fexp = x->f_exp;
double tem = (fpred - fexp);
y += __builtin_fabs (tem / x->f_sigma);
w += __builtin_fabs (tem / fexp);
}
}
and -Ofast -march=core-avx2 -m32 -fno-vect-cost-model --param
vect-max-peeling-for-alignment=0.
Somehow the original case gets
crystal.fppized.f90:3643:0: note: === vect_make_slp_decision ===
crystal.fppized.f90:3643:0: note: Decided to SLP 1 instances. Unrolling factor
2
crystal.fppized.f90:3643:0: note: === vect_detect_hybrid_slp ===
crystal.fppized.f90:3643:0: note: === vect_update_vf_for_slp ===
crystal.fppized.f90:3643:0: note: Loop contains SLP and non-SLP stmts
crystal.fppized.f90:3643:0: note: Updating vectorization factor to 8
while I get only SLP stmts in the C case.
More information about the Gcc-bugs
mailing list