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}.

Reply via email to