https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107451
--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to bartoldeman from comment #3) > Created attachment 53786 [details] > Corrected test case > > In my eagerness to make it as short as possible I made it too short indeed! 35 <bb 3> [local count: 105119324]: 36 bnd.12_91 = (unsigned int) n_29(D); 37 _90 = (long unsigned int) inc_x_33(D); 38 _89 = _90 * 8; 39 ivtmp.24_45 = (unsigned long) x_31(D); 40 ivtmp.26_3 = (unsigned long) y_32(D); 41 42 <bb 4> [local count: 955630225]: 43 # vect_dot_3_55.16_71 = PHI <vect__20.17_70(4), { 0.0, 0.0, 0.0, 0.0 }(3)> 44 # ivtmp.19_55 = PHI <ivtmp.19_92(4), 0(3)> 45 # ivtmp.24_49 = PHI <ivtmp.24_46(4), ivtmp.24_45(3)> 46 # ivtmp.26_1 = PHI <ivtmp.26_2(4), ivtmp.26_3(3)> 47 _75 = (void *) ivtmp.24_49; 48 _78 = MEM <vector(2) double> [(const double *)_75]; 49 _76 = MEM <vector(2) double> [(const double *)_75 + _89 * 1]; 50 vect_cst__74 = {_78, _76}; --------------- here 51 vect__4.14_73 = VEC_PERM_EXPR <vect_cst__74, vect_cst__74, { 1, 0, 1, 0 }>; 52 _5 = (void *) ivtmp.26_1; 53 _86 = MEM <vector(2) double> [(const double *)_5]; 54 _84 = MEM <vector(2) double> [(const double *)_5 + _89 * 1]; 55 vect_cst__82 = {_86, _84}; -------------- here 56 vect__6.13_81 = VEC_PERM_EXPR <vect_cst__82, vect_cst__82, { 0, 1, 1, 0 }>; 57 vect__20.17_70 = .FMA (vect__4.14_73, vect__6.13_81, vect_dot_3_55.16_71); 58 ivtmp.19_92 = ivtmp.19_55 + 1; 59 ivtmp.24_46 = ivtmp.24_49 + _89; 60 ivtmp.26_2 = ivtmp.26_1 + _89; 61 if (bnd.12_91 != ivtmp.19_92) 62 goto <bb 4>; [90.00%] 63 else 64 goto <bb 5>; [10.00%] 65 66 <bb 5> [local count: 105119324]: 67 _51 = .REDUC_PLUS (vect__20.17_70); [tail call] It looks like it should be vect_cst__82 = {_84, _86} not {_86, _84}, similar for vect_cst__74 = {_76, _78} not {_78, _76}.