This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH, PR 10474] Split live-ranges of function arguments to help shrink-wrapping
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: Martin Jambor <mjambor at suse dot cz>
- Cc: Steven Bosscher <stevenb dot gcc at gmail dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 21 Oct 2013 23:00:38 -0400
- Subject: Re: [PATCH, PR 10474] Split live-ranges of function arguments to help shrink-wrapping
- Authentication-results: sourceware.org; auth=none
- References: <20131021163237 dot GA11578 at virgil dot suse> <CABu31nMPQWjT5HnnQAOMF5tj+t-L4CNNpFvGxF-VtCZf44_EXQ at mail dot gmail dot com>
On 13-10-21 6:56 PM, Steven Bosscher wrote:
Sorry, Martin. I think Steven is right. IRA/LRA (and reload pass)
creates so many changes in RTL that DF infrastructure would slow down
the compiler a lot and therefore df info is not updated during RA. Your
patch mostly uses a correct DF-info because there are few changes since
updating is off.
+ bitmap_clear (&need_new);
+ bitmap_clear (&reachable);
+ for (df_ref use = DF_REG_USE_CHAIN (REGNO(dest));
+ use = DF_REF_NEXT_REG (use))
You're using DF in these places. But IRA and LRA don't work with DF.
After update_equiv_regs DF caches and liveness may be incorrect. You'd
have to add a df_analyze call but I'm not sure how that will interact
with IRA/LRA's own dataflow frameworks (e.g. w.r.t.
You could move your optimization a bit up before df_clear_flags
(DF_NO_INSN_RESCAN); or move this call right after your optimizations
(possibly some minor df calls are needed too to restore live info for RA
after your RTL changes).