https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98854
--- Comment #8 from rguenther at suse dot de <rguenther at suse dot de> --- On Wed, 27 Jan 2021, marxin at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98854 > > --- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- > > I used -O3 but -O2 -ftree-slp-vectorize also vectorizes it. > > I must be blind, but I see for the current master: > > gcc pr98854.c -c -O2 -ftree-slp-vectorize -fdump-tree-optimized=/dev/stdout > > foo (int n) > { > unsigned long ivtmp.8; > double y; > double x; > double _6; > double _8; > double _9; > double _11; > int _14; > void * _29; > unsigned long _31; > > <bb 2>: > ivtmp.8_28 = (unsigned long) &MEM[(void *)&a + 8184B]; > _31 = (unsigned long) &a; > > <bb 3>: > # x_1 = PHI <0.0(2), x_10(5)> > # y_2 = PHI <0.0(2), y_12(5)> > # ivtmp.8_18 = PHI <ivtmp.8_28(2), ivtmp.8_27(5)> > _29 = (void *) ivtmp.8_18; > _6 = MEM[base: _29, offset: 0B]; > _8 = MEM[base: _29, offset: 8B]; > _9 = _6 + _8; > x_10 = _9 + x_1; > _11 = _6 / _8; > y_12 = _11 + y_2; > _14 = bar (); > if (_14 != 0) > goto <bb 4>; > else > goto <bb 5>; > > <bb 4>: > a[0] = x_10; > a[1] = y_12; > return; > > <bb 5>: > ivtmp.8_27 = ivtmp.8_18 - 8; > if (ivtmp.8_27 != _31) > goto <bb 3>; > else > goto <bb 4>; > > } Hmm, maybe my dev tree has related adjustments to SLP ... at least the posted patch fixes the regression for me.