------- 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