[Bug rtl-optimization/42631] [4.5 Regression] "-fcompare-debug failure" with "-O1 -funroll-loops"

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Jan 6 23:54:00 GMT 2010



------- Comment #3 from steven at gcc dot gnu dot org  2010-01-06 23:53 -------
In the .loop2_done dump, the RTL looks like this:

    7 NOTE_INSN_BASIC_BLOCK
    6 NOTE_INSN_FUNCTION_BEG
   22 {r63:SI=r62:SI-0x1;clobber flags:CC;}
   23 {r64:SI=r63:SI&0x7;clobber flags:CC;}
   26: debug k => r62:SI
   27 {r62:SI=r62:SI-0x1;clobber flags:CC;}
      REG_UNUSED: flags:CC
   28: debug k => r62:SI
   29 flags:CCZ=cmp(r62:SI,0x0)
   30 pc={(flags:CCZ!=0x0)?L225:pc}
      REG_BR_PROB: 0x2198
      REG_DEAD: flags:CCZ


And in the .web dump, the registers have been renamed:

    7 NOTE_INSN_BASIC_BLOCK
    6 NOTE_INSN_FUNCTION_BEG
   22 {r63:SI=r62:SI-0x1;clobber flags:CC;}
   23 {r64:SI=r63:SI&0x7;clobber flags:CC;}
   26: debug k => r66:SI
   27 {r68:SI=r67:SI-0x1;clobber flags:CC;}
      REG_UNUSED: flags:CC
   28: debug k => r68:SI
   29 flags:CCZ=cmp(r68:SI,0x0)
   30 pc={(flags:CCZ!=0x0)?L225:pc}
      REG_BR_PROB: 0x2198
      REG_DEAD: flags:CCZ


Note the changes in insn 26 and insn 27. The use of reg 62 in debug_insn 26 is
put in its own web, because the webizer hasn't found a DEF for it -- so it
splits the live ranges of reg 62 into a single live range for the debug_insn
and a new live range for the def of insn 27 and all uses reached by this def.

Alexandre, does the position of debug_insn 26 look right to you?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42631



More information about the Gcc-bugs mailing list