[Bug rtl-optimization/78200] [7 Regression] 429.mcf of cpu2006 regresses in GCC trunk for avx2 target.
venkataramanan.kumar at amd dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 15 11:49:00 GMT 2016
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.
Non canonical gimple generated at if conversion
<bb 27>:
_496 = _512 == 2;
_495 = red_cost_503 > 0;
_494 = _496 & _495;
if (_494 != 0)
goto <bb 28>;
else
goto <bb 29>;
should be retain the correct order when we swap back to make it canonical ?
More information about the Gcc-bugs
mailing list