https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113808
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |14.0
Keywords| |wrong-code
CC| |tnfchris at gcc dot gnu.org
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
The error must be for the continuation of 'k' to the scalar loop where we have
<bb 5> [local count: 829590381]:
MEM <vector(4) integer(kind=4)> [(integer(kind=4) *)&D.4344] =
vect_vec_iv_.27_95;
vect_k.32_118 = vect_vec_iv_.27_95 + { 1, 1, 1, 1 };
k.4_23 = k.4_55 + 1;
ivtmp_120 = ivtmp_119 + 1;
if (ivtmp_120 < bnd.23_89)
goto <bb 15>; [85.44%]
else
goto <bb 18>; [14.56%]
<bb 18> [local count: 136777259]:
# k.4_45 = PHI <k.4_23(5)>
# ivtmp_76 = PHI <ivtmp_14(5)>
# vect_vec_iv_.27_99 = PHI <vect_vec_iv_.27_95(5)>
# vect__19.29_108 = PHI <{ 0, 1, 2, 3 }(5)>
_109 = BIT_FIELD_REF <vect__19.29_108, 32, 96>;
_48 = _109;
_100 = BIT_FIELD_REF <vect_vec_iv_.27_99, 32, 0>;
k.4_43 = _100;
niters_vector_mult_vf.24_90 = bnd.23_89 << 2;
tmp.26_93 = 53 - niters_vector_mult_vf.24_90;
_92 = (integer(kind=4)) niters_vector_mult_vf.24_90;
tmp.25_91 = _92 + 1;
if (niters.22_12 == niters_vector_mult_vf.24_90)
goto <bb 6>; [25.00%]
else
goto <bb 22>; [75.00%]
<bb 22> [local count: 136777259]:
# k.4_74 = PHI <tmp.25_91(18), k.4_78(23)>
# ivtmp_77 = PHI <tmp.26_93(18), ivtmp_79(23)>
but I can't really see anything wrong here (besides redundant code).
It's possible to elide the middle loop, but I failed to emulate the
inner loop how it's presented without -fopenmp-simd.