This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/33224] failing rtl iv analysis (maybe due to df)
- From: "dorit at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Aug 2007 16:29:39 -0000
- Subject: [Bug rtl-optimization/33224] failing rtl iv analysis (maybe due to df)
- References: <bug-33224-6954@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #5 from dorit at gcc dot gnu dot org 2007-08-30 16:29 -------
> dorit,
> i am having trouble exactly reproducing this example because you did not
> give the svn revision and so all of the numbers are a little bit
> different.
it's revision 127623
> However, I am going to submit a patch which improves the dump
> information a lot for these passes and we should talk about it after we
> can get on the same page.
I applied your patch, and I'll send you the dump shorlty.
> However, from looking at your posting, there are some issues that you
> may want to look at before we talk:
> The reaching defs problem makes a scan for all of the defs in the blocks
> in the region. Once all of the defs are found, they are sorted where
> the primary key is the regno.
> The id's (DF_REF_ID) are then assigned based on this sorting. The
> reaching defs problem actually depends on all of the defs for a regno to
> be contigious.
> The DF_REF_IDs are not stable between calls to df_set_blocks and any def
> outside of the region has an undefined DF_REF_ID.
> In your posting you have:
> > Below is the output of df_ref_debug for adef in each iteration of the loop in
> > latch_dominating_def:
> > d40 reg 187 bb 3 insn 255 flag 0x0 type 0x0 loc 0xf7da4608(0xf7d9a4e0) chain { }
> > d93 reg 187 bb 2 insn 40 flag 0x0 type 0x0 loc 0xf7d89cc8(0xf7d9a4e0) chain { }
> The number after the first "d" is the DF_REF_ID. Note that they are not
> contiguous.
> Given the sorting that occurred, they must be contiguous. I assume from this
> that
> someone is holding on to old id's. This is not correct.
> If you are going to play the game with df_set_blocks, you are allowed to hold
> onto a
> def, but not the DF_REF_ID, you cannot look at the DF_REF_ID for a def
> that is not in the blocks set by df_set_blocks.
are you saying it's safer not to call df_set_blocks in iv_analysis_loop_init?
(iv-analysis still fails when I do that, but maybe that in turn requires other
changes?)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33224