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