[Bug rtl-optimization/25130] [4.1/4.2 Regression] miscompilation in GCSE

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Dec 17 18:24:00 GMT 2005



------- Comment #9 from steven at gcc dot gnu dot org  2005-12-17 18:23 -------
Breakpoint 7, compute_transp (x=0x4021557c, indx=0, bmap=0x894e1b8, set_p=0) at
gcse.c:2500
2500                    rtx list_entry = canon_modify_mem_list[bb_index];
(gdb) p debug_rtx(x)
(mem/s/j:SI (plus:SI (reg/f:SI 20 frame)
        (const_int -8 [0xfffffff8])) [0 <variable>._M_impl._M_start_node+0 S4
A32])
$33 = void
(gdb) next
2502                    while (list_entry)
(gdb)
2509                        dest = XEXP (list_entry, 0);
(gdb)
2510                        list_entry = XEXP (list_entry, 1);
(gdb)
2511                        dest_addr = XEXP (list_entry, 0);
(gdb)
2513                        if (canon_true_dependence (dest, GET_MODE (dest),
dest_addr,
(gdb)
2522                        list_entry = XEXP (list_entry, 1);
(gdb) p debug_rtx(x)
(mem/s/j:SI (plus:SI (reg/f:SI 20 frame)
        (const_int -8 [0xfffffff8])) [0 <variable>._M_impl._M_start_node+0 S4
A32])
$34 = void
(gdb) p debug_rtx(dest)
(mem/s/j/c:SI (plus:SI (reg/f:SI 20 frame)
        (const_int -8 [0xfffffff8])) [0 clusters.D.1846._M_impl._M_finish_cur+0
S4 A32])
$35 = void
(gdb) 

so (mem/s/j/c:SI (plus:SI (reg/f:SI 20 frame) (const_int -8 [0xfffffff8]))) and 
(mem/s/j/c:SI (plus:SI (reg/f:SI 20 frame) (const_int -8 [0xfffffff8]))) don't
conflict...  But frame is not changed in the function, so surely this is wrong?

(Maybe this is obvious to people with better RTL-fu than me, so don't be too
harsh on me ;-)


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |alias


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



More information about the Gcc-bugs mailing list