https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128248
Drea Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
size: 1 _1 = x_13(D)->w[i_24];
size: 1 _2 = y_14(D)->w[i_24];
size: 0 _15 = .ADD_OVERFLOW (_1, _2);
size: 0 _3 = IMAGPART_EXPR <_15>;
size: 0 _4 = REALPART_EXPR <_15>;
size: 0 _16 = .ADD_OVERFLOW (_4, k_23);
size: 0 _5 = IMAGPART_EXPR <_16>;
size: 1 _6 = _3 | _5;
size: 0 _7 = REALPART_EXPR <_16>;
size: 1 r_17(D)->w[i_24] = _7;
size: 1 i_19 = i_24 + 1;
Hmm, even the size of ADD_OVERFLOW looks wrong ...
So we don't detect UADDC until after loop unrolling. So the cost model here
might is not taking into that account.