On 01/10/14 10:03, Paulo Matos wrote:


Paulo Matos


-----Original Message-----
From: Richard Biener [mailto:richard.guent...@gmail.com]
Sent: 10 January 2014 13:25
To: Paulo Matos
Cc: gcc@gcc.gnu.org
Subject: Re: Useless statement in loop latch looks like performance regression

Most likely changes to SSA coalescing at out-of-SSA time like

2013-09-26  Richard Biener  <rguent...@suse.de>

         * tree-ssa-live.c (var_map_base_init): Handle SSA names with
         DECL_IGNORED_P base VAR_DECLs like anonymous SSA names.
         (loe_visit_block): Use gcc_checking_assert.
         * tree-ssa-coalesce.c (create_outofssa_var_map): Use
         gimple_assign_ssa_name_copy_p.
         (gimple_can_coalesce_p): Adjust according to the var_map_base_init
         change.

and an earlier patch by Jeff Law.

You're right, I tracked it down to this one:

Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Jun 14 18:52:32 2013 +0000

         * gimple.h (gimple_can_coalesce_p): Prototype.
         * tree-ssa-coalesce.c (gimple_can_coalesce_p): New function.
         (create_outofssa_var_map, coalesce_partitions): Use it.
         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Similarly.
         * tree-ssa-live.c (var_map_base_init): Use TYPE_CANONICAL
         if it's available.

         * gcc.dg/tree-ssa/coalesce-1.c: New test.
More aggressive coalescing can, in some cases, be detrimental. That's inherent in coalescing. I'm open to suggestions on heuristics to improve things.

jeff

Reply via email to