https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64916

amker at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amker at gcc dot gnu.org

--- Comment #2 from amker at gcc dot gnu.org ---
Below is full dump of pr43920-2.c with "-mthumb -mcpu=cortex-m3 -Os" options:

   10: NOTE_INSN_BASIC_BLOCK 2
    2: r116:SI=r0:SI
    3: r117:SI=r1:SI
      REG_DEAD r1:SI
    4: r118:SI=r2:SI
      REG_DEAD r2:SI
    5: NOTE_INSN_FUNCTION_BEG
   12: r2:SI=0x1
   13: r1:SI=0
   15: r0:SI=call [`lseek'] argc:0
      REG_DEAD r2:SI
      REG_DEAD r1:SI
      REG_CALL_DECL `lseek'
   16: r111:SI=r0:SI
      REG_DEAD r0:SI
   17: r2:SI=0x2
   18: r1:SI=0
   19: r0:SI=r116:SI
      REG_DEAD r116:SI
   20: r0:SI=call [`lseek'] argc:0
      REG_DEAD r2:SI
      REG_DEAD r1:SI
      REG_CALL_DECL `lseek'
   21: r112:SI=r0:SI
      REG_DEAD r0:SI
   22: cc:CC=cmp(r111:SI,0xffffffffffffffff)
   23: pc={(cc:CC==0)?L46:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 159
   24: NOTE_INSN_BASIC_BLOCK 3
   25: cc:CC=cmp(r112:SI,0xffffffffffffffff)
   26: pc={(cc:CC==0)?L50:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 159
   27: NOTE_INSN_BASIC_BLOCK 4
   28: NOTE_INSN_DELETED
   29: {cc:CC_NOOV=cmp(r112:SI-r111:SI,0);r114:SI=r112:SI-r111:SI;}
      REG_DEAD r112:SI
   30: pc={(cc:CC_NOOV==0)?L54:pc}
      REG_DEAD cc:CC_NOOV
      REG_BR_PROB 400
   31: NOTE_INSN_BASIC_BLOCK 5
   32: [r117:SI]=r111:SI
      REG_DEAD r117:SI
      REG_DEAD r111:SI
   33: [r118:SI]=r114:SI
      REG_DEAD r118:SI
      REG_DEAD r114:SI
    7: r110:SI=0
      REG_EQUAL 0
   76: pc=L34
   77: barrier
   46: L46:
   45: NOTE_INSN_BASIC_BLOCK 6
    8: r110:SI=r111:SI
      REG_DEAD r111:SI
      REG_EQUAL 0xffffffffffffffff
   78: pc=L34
   79: barrier
   50: L50:
   49: NOTE_INSN_BASIC_BLOCK 7
    6: r110:SI=r112:SI
      REG_DEAD r112:SI
      REG_EQUAL 0xffffffffffffffff
   80: pc=L34
   81: barrier
   54: L54:
   53: NOTE_INSN_BASIC_BLOCK 8
    9: r110:SI=0xffffffffffffffff
      REG_EQUAL 0xffffffffffffffff
   34: L34:
   35: NOTE_INSN_BASIC_BLOCK 9
   40: r0:SI=r110:SI
      REG_DEAD r110:SI
   41: use r0:SI

Before r216169 (with REG_EQUAL in insn9), jumps from basic block 6/7/8 can be
merged because r110 equals to -1 afterwards.  But with the patch, the equal
information of r110==-1 in basic block 8 is lost.  As a result, jump from 8->9
can't be merged and two additional instructions are generated.

Reply via email to