This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Repost: RFA [4.1]: improvement to if-conversion and cross-jumping (PR20070)
- From: Joern RENNECKE <joern dot rennecke at st dot com>
- To: Bernd Schmidt <bernds_cb1 at t-online dot de>
- Cc: Steven Bosscher <stevenb at suse dot de>, Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org, jh at suse dot cz
- Date: Fri, 02 Dec 2005 19:33:42 +0000
- Subject: Re: Repost: RFA [4.1]: improvement to if-conversion and cross-jumping (PR20070)
- References: <41E59432.7080504@st.com> <42CD71E0.3070804@st.com> <42D3B666.6050701@st.com> <200507121547.21305.stevenb@suse.de> <42D3E705.9030507@st.com> <42D7C264.6030507@st.com> <438C567A.7030104@t-online.de> <438CCE0F.6020209@st.com> <438DC224.8020300@t-online.de>
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.