This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Out of SSA status and issues
- From: law at redhat dot com
- To: Michael Matz <matz at suse dot de>
- Cc: Andrew MacLeod <amacleod at redhat dot com>, Diego Novillo <dnovillo at redhat dot com>, gcc mailing list <gcc at gcc dot gnu dot org>
- Date: Mon, 12 May 2003 10:16:00 -0600
- Subject: Re: [tree-ssa] Out of SSA status and issues
- Reply-to: law at redhat dot com
In message <Pine.LNX.4.44.0305121802110.15564-100000@wotan.suse.de>, Michael Ma
tz writes:
>Hi,
>
>On 12 May 2003, Andrew MacLeod wrote:
>
>> I beleive the bvrute force approach is to flag any variables which are
>> elements of PHI's acroiss an abnormal ciroitcal edge, and never copy
>> propagate them ie, so in the example, when you look at the PHI, you see
>> p_9 and p_14 are used across abnormal critical edges, so you stick them
>> in a list of variables never to copy propagate.
>
>A better heuristic is to start with ignoring abnormal critical edges.
>Then _if_ there are copies inserted on such edges, mark the involved
>variables as never-propagate. In that case rerun the pass. Yes, this
>sometimes is slower, but produces better code (i.e. something or -O3
>depending on how slow it actually is).
This heuristic won't work for Andrew's problem since we don't know if
things are "mucked up" until we're about to leave SSA form, at which
point you can't easily go back and undo the copy propagation.
This kind of heuristic does work for things like PRE/LCM though.
jeff