[Bug rtl-optimization/78200] [7 Regression] 429.mcf of cpu2006 regresses in GCC trunk for avx2 target.
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Tue Nov 15 11:55:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78200
--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 15 Nov 2016, venkataramanan.kumar at amd dot com wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78200
>
> --- Comment #17 from Venkataramanan <venkataramanan.kumar at amd dot com> ---
> Looking at the check
> red_cost < 0 && arc->ident == AT_LOWER)
> || (red_cost > 0 && arc->ident == AT_UPPER
>
> The order if-combine created seem to be the best.
>
> if (red_cost_86 < 0)
> goto <bb 17>;
> else
> goto <bb 18>;
>
> <bb 17>:
> if (_23 == 1)
> goto <bb 19>;
> else
> goto <bb 20>;
>
> <bb 18>:
> _340 = _23 == 2;
> _341 = red_cost_86 > 0;
> _338 = _340 & _341;
> if (_338 != 0)
> goto <bb 19>;
> else
> goto <bb 20>;
>
> <bb 19>:
> basket_size.5_30 = basket_size;
> _31 = basket_size.5_30 + 1;
> basket_size = _31;
> _32 = perm[_31];
> _32->a = arc_47;
> _32->cost = red_cost_86;
> _33 = ABS_EXPR <red_cost_86>;
> _32->abs_cost = _33;
>
> If red_cost < 0 is false then checking for arc->ident == AT_UPPER first. This
> is better, since we know red_cost >0 will always be true.
red_cost can be zero. The "bad" order is best (just slower for some
still unknown reason).
More information about the Gcc-bugs
mailing list