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.

Reply via email to