[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
Fri Nov 11 10:56:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78200
--- Comment #15 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 11 Nov 2016, venkataramanan.kumar at amd dot com wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78200
>
> --- Comment #14 from Venkataramanan <venkataramanan.kumar at amd dot com> ---
> Between GCC 6.2.0 and GCC 7 (Nov/10/2016) I see three major differences in
> gimple opts dump.
>
> 1. IPA inline is more aggressive in GCC 7. Looks like it is in-lining more in
> hot function "primal_bea_mpp". However completely disabling ipa inline still
> produces regression in GCC 7.
>
> 2. Non canonicial gimple formation at tree if conversion. This is already
> pointed in comment 1. Using -fno-tree-loop-if-convert in GCC 7 brings back the
> runtime same as GCC 6.
>
> 3. In GCC 7 the true block is kept after the "red_cost > 0" check.
>
> red_cost = arc->cost - arc->tail->potential + arc->head->potential;
> if( bea_is_dual_infeasible( arc, red_cost ) )
> {
> True block ==> next++;
> perm[next]->a = arc;
> perm[next]->cost = red_cost;
> perm[next]->abs_cost = ABS(red_cost);
>
> Note bea_is_dual_infeasible is expanded by this check
> red_cost < 0 && arc->ident == AT_LOWER)
> || (red_cost > 0 && arc->ident == AT_UPPER)
>
>
> Tree VRP in GCC6 moves the true block to the last of the gimple blocks.
>
> Now When I compile GCC 6 with -fno-tree-vrp the true block is at same position
> as in GCC 7 (trunk). I get the regression in GCC 6.
>
> So block movement in GCC 6 and not done in GCC 7 is also interesting
> observation.
block movement on gimple doesn't really mean anything but what is
interesting is the (guessed) profile data on the blocks/edges.
More information about the Gcc-bugs
mailing list