This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Repost: RFA [4.1]: improvement to if-conversion and cross-jumping (PR20070)


Bernd Schmidt wrote:

Couple of new comments:
Why are we using true_regnum at all here, post reload? All regs should be hardregs at that point, and subregs of them should have been eliminated.

Neither is the case even now.


i686-pc-linux-gnu bootstrap: REG_EQUAL notes containing pseudos:

(gdb) call debug_rtx(info->cur.x_start)
(insn:HI 161 160 162 23 ../../srcw/gcc/alias.c:1576 (set (reg:QI 0 ax [91])
(lt:QI (reg:CCGC 17 flags)
(const_int 0 [0x0]))) 346 {*setcc_1} (insn_list:REG_DEP_TRUE 160 (nil))
(expr_list:REG_DEAD (reg:CCGC 17 flags)
(expr_list:REG_EQUAL (lt:QI (reg:SI 2 cx [orig:64 iftmp.226 ] [64])
(reg:SI 88))
(nil))))
(gdb) call debug_rtx(info->cur.y_start)
(insn:HI 124 123 125 17 ../../srcw/gcc/alias.c:1572 (set (reg:QI 0 ax [83])
(lt:QI (reg:CCGC 17 flags)
(const_int 0 [0x0]))) 346 {*setcc_1} (insn_list:REG_DEP_TRUE 123 (nil))
(expr_list:REG_DEAD (reg:CCGC 17 flags)
(expr_list:REG_EQUAL (lt:QI (reg:SI 2 cx [orig:67 iftmp.224 ] [67])
(reg:SI 80))
(nil))))


sh64-elf build: SUBREGs of hard registers in REG_EQUAL notes.

(gdb) call debug_rtx(info->cur.x_start)
(insn:HI 391 773 1346 37 dp-bit.c:329 (set (reg:SI 2 r2)
(and:SI (reg:SI 2 r2)
(reg:SI 8 r8 [orig:324+4 ] [324]))) 83 {*andsi3_compact} (insn_list:REG_DEP_TRUE 388 (insn_list:REG_DEP_TRUE 389 (insn_list:REG_DEP_TRUE 390 (nil))))
(expr_list:REG_DEAD (reg:SI 8 r8 [orig:324+4 ] [324])
(expr_list:REG_EQUAL (and:SI (subreg:SI (reg:DI 3 r3 [orig:321 exp ] [321]) 4)
(const_int 2047 [0x7ff]))
(expr_list:REG_NO_CONFLICT (reg:DI 3 r3 [orig:321 exp ] [321])
(expr_list:REG_NO_CONFLICT (reg:DI 7 r7 [324])
(nil))))))
(gdb) call debug_rtx(info->cur.y_start)
(insn:HI 258 656 1634 25 dp-bit.c:286 (set (reg:SI 2 r2)
(and:SI (reg:SI 2 r2)
(reg:SI 8 r8 [orig:254+4 ] [254]))) 83 {*andsi3_compact} (insn_list:REG_DEP_TRUE 255 (insn_list:REG_DEP_TRUE 256 (insn_list:REG_DEP_TRUE 257 (nil))))
(expr_list:REG_DEAD (reg:SI 8 r8 [orig:254+4 ] [254])
(expr_list:REG_EQUAL (and:SI (subreg:SI (reg:DI 3 r3 [orig:251 prephitmp.61 ] [251]) 4)
(const_int 2047 [0x7ff]))
(expr_list:REG_NO_CONFLICT (reg:DI 3 r3 [orig:251 prephitmp.61 ] [251])
(expr_list:REG_NO_CONFLICT (reg:DI 7 r7 [254])
(nil))))))


This was building little-endian -m5-compact _pack_df.o; the REG_EQUAL notes were still factually correct.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]