This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 0005-Search-all-dominated-blocks-for-expressions-to-hoist.patch


On 06/29/10 15:08, Steven Bosscher wrote:
On Tue, Jun 29, 2010 at 8:23 PM, Maxim Kuvyrkov<maxim@codesourcery.com> wrote:
On 6/24/10 7:53 PM, Maxim Kuvyrkov wrote:
...
This updated patch corrects the cleaning routine and adds several
comments to annotate its actions.
Ping.

Also, in case you haven't look at the patch yet, here is yet another version
with a fix to potential miscompilation of code with EH. Otherwise the patch
is the same.

A miscompilation can occur due to VBEout sets not filtering out expressions
that die to due to abnormal control flow, these expression are represented
in TRANSPOUT set. This updated version (a) filters out VBEout sets with
!TRANSPOUT and (b) adds a check to hoist_expr_reaches_here_p() that accounts
for TRANSPOUT. Previously, the check in hoist_code() would suffice because
we never looked too far down the CFG.
The ideal patch would remove TRANSPOUT and clean out those expressions
earlier, see what RTL PRE does.

If you clean that up first, this latest version 0003 patch will
probably look better/simpler.
If there is a real issue here, the PRE approach is required for correctness. TRANSPOUT misses a boatload of stuff (Integer DIV/MOD, most FP operations, etc).

What I'm struggling with is why we need this hair at all for hoisting since we're not inserting on edges.

jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]