From: Steve Ellcey <sellcey@mips.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: <gcc-patches@gcc.gnu.org>
Subject: Re: [Patch, PR 54128] ira.c change to fix mips bootstrap
Date: Fri, 07 Sep 2012 21:50:00 -0000 [thread overview]
Message-ID: <1347054581.14333.275.camel@ubuntu-sellcey> (raw)
In-Reply-To: <20120905061507.GD1999@tucnak.redhat.com>
On Wed, 2012-09-05 at 08:15 +0200, Jakub Jelinek wrote:
> On Fri, Aug 31, 2012 at 10:58:51AM -0700, Steve Ellcey wrote:
> > Here is my patch to fix the bootstrap comparision failure (PR 54128) on
> > MIPS. The reason for the comparision failure was a difference in
> > register usage and I tracked it down to build_insn_chain which checked
> > all instructions for register usage in order to set the dead_or_set
> > and live_relevant_regs bitmaps instead of checking only non-debug
> > instructions. Changing INSN_P to NONDEBUG_INSN_P in build_insn_chain
> > allowed me to bootstrap and caused no regressions.
>
> The debug insns generally shouldn't extend the lifetime of pseudos (see the
> valtrack.c stuff), so if you hit this, there is probably some earlier bug
> that didn't reset/adjust the debug insns in question.
> I'm not saying the ira.c patch is absolutely a bad idea, but it would be
> good if you could investigate where those debug insns started extending
> lifetime of pseudos.
>
> > 2012-08-31 Steve Ellcey <sellcey@mips.com>
> >
> > PR bootstrap/54128
> > * ira.c (build_insn_chain): Check only NONDEBUG instructions for
> > register usage.
>
> Jakub
I think I know where this may be going wrong, though I am having trouble
actually creating a patch. I think MIPS should define
TARGET_DELAY_VARTRACK and call variable_tracking_main from mips_reorg.
The systems that define TARGET_DELAY_VARTRACK all have this comment:
/* Variable tracking should be run after all optimizations which
change order of insns. It also needs a valid CFG. */
#undef TARGET_DELAY_VARTRACK
#define TARGET_DELAY_VARTRACK true
And I think mips_reorg could change the order of insns. I have tried
putting a call to variable_tracking_main in mips_df_reorg (and changed
mips_cfg_in_reorg to return true if flag_var_tracking is true but that
didn't fix the problem. I thought this might be because some of the
mips_reorg code that comes after mips_df_reorg is still changing
insn ordering. I tried putting a call to variable_tracking_main at the
end of mips_reorg:
if (flag_var_tracking)
{
compute_bb_for_insn ();
df_analyze ();
timevar_push (TV_VAR_TRACKING);
variable_tracking_main ();
timevar_pop (TV_VAR_TRACKING);
df_finish_pass (false);
free_bb_for_insn ();
}
But I just get a seg fault in compute_bb_for_insn, If I remove
that (and free_bb_for_insn) I get a segfault in df_analyze. I
am not sure exactly what I need to set up to call variable_tracking_main
at this point in the code. Is there something else I need to call to
ensure that I have a valid control flow graph? I don't see other
platforms that call variable_tracking_main from their reorg routines
doing anything else.
Steve Ellcey
sellcey@mips.com
next prev parent reply other threads:[~2012-09-07 21:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-31 17:59 Steve Ellcey
2012-09-05 6:19 ` Jakub Jelinek
2012-09-05 22:47 ` Steve Ellcey
2012-09-07 21:50 ` Steve Ellcey [this message]
2012-09-08 13:01 ` Richard Sandiford
2012-12-21 7:46 ` Jakub Jelinek
2012-12-21 18:55 ` Steve Ellcey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1347054581.14333.275.camel@ubuntu-sellcey \
--to=sellcey@mips.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).