This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] Move ehcleanup pass to before early SRA
- From: Martin Jambor <mjambor at suse dot cz>
- To: Eric Botcazou <ebotcazou at adacore dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 15 Jan 2014 19:04:47 +0100
- Subject: Re: [RFC] Move ehcleanup pass to before early SRA
- Authentication-results: sourceware.org; auth=none
- References: <1931947 dot uvSAzT6pjY at polaris> <1516660 dot 2kBhdnQEvf at polaris> <CAFiYyc1Vn64RUFdSM_zq12aKDsEo6sc1J_adMDomwRm4ZWrTSA at mail dot gmail dot com> <2611896 dot RK3v2l5tzG at polaris>
Hi,
On Wed, Jan 15, 2014 at 06:37:30PM +0100, Eric Botcazou wrote:
> > I know, I'm saying it may be possible to implement an equivalent
> > optimization without SSA form.
>
> Sure, but what would be the point of this duplication exactly?
>
> > I'm saying even ESRA should be able to scalarize it just fine. It just
> > needs to be careful where to insert the loads from the aggregate result
> > (on the single outgoing non-EH edge).
> >
> > Wouldn't that fix your issue?
>
> Very likely, yes, but there might be other passes with the same problem before
> the first EH cleanup pass (e.g. FRE, DCE, etc).
>
> > Early inlining.
>
> Are you sure? I don't see how 032t.ehcleanup1 can have any effects on
> p.adb.018t.einline (unless something mysterious happens here).
We early-optimize functions in topological order so generally (except
for SCCs), so when 018t.einline runs all the callees have already been
early-optimized, and it is really the callees it looks at most.
(But it of course prepares the function for ipa inlining analysis too
since the standalone functions will be untouched.)
Martin
>
> > > p.adb.003t.original
> > > p.adb.004t.gimple
> > > p.adb.005t.nested
> > > p.adb.006t.omplower
> > > p.adb.007t.lower
> > > p.adb.009t.ehopt
> > > p.adb.010t.eh
> > > p.adb.011t.cfg
> > > p.adb.015t.ssa
> > > p.adb.017t.inline_param1
> > > p.adb.018t.einline
> > > p.adb.019t.early_optimizations
> > > p.adb.020t.copyrename1
> > > p.adb.021t.ccp1
> > > p.adb.022t.forwprop1
> > > p.adb.023t.ealias
> > > p.adb.024t.esra
> > > p.adb.025t.fre1
> > > p.adb.026t.copyprop1
> > > p.adb.027t.mergephi1
> > > p.adb.028t.cddce1
> > > p.adb.029t.eipa_sra
> > > p.adb.030t.tailr1
> > > p.adb.031t.switchconv
> > > p.adb.032t.ehcleanup1
> > > p.adb.033t.profile_estimate
> > > p.adb.034t.local-pure-const1
> > > p.adb.035t.fnsplit
> > > p.adb.036t.release_ssa
> > > p.adb.037t.inline_param2
> > > p.adb.054t.copyrename2
>
> --
> Eric Botcazou