[Bug rtl-optimization/17169] optimization bug

sje at cup dot hp dot com gcc-bugzilla@gcc.gnu.org
Mon Jan 10 23:43:00 GMT 2005


------- Additional Comments From sje at cup dot hp dot com  2005-01-10 23:43 -------
I looked into this bug some, it is fixed on 4.0, but the patch that fixes it is
the integration of tree-ssa into the mainline.  I believe that the underlying
combine bug still exists but the tree-ssa changes result in different RTL being
generated so that the combine bug isn't hit.  I looked at try_combine using the
3.4 sources.  Attached is  the i1, i2, i3 values we enter try_combine with and
what it generates.  I have no idea how it came up with the result that it did
but that seems to be the heart of the problem.


In try_combine:

I1 is
(nil)
I2 is
(insn 53 51 54 2 (set (reg:BI 360)
        (eq:BI (reg/v:SI 341 [ rnd_mode ])
            (const_int 2 [0x2]))) 209 {*cmpsi_normal} (nil)
    (expr_list:REG_DEAD (reg/v:SI 341 [ rnd_mode ])
        (nil)))
I3 is
(insn 57 56 58 2 (set (reg:BI 363)
        (and:BI (gt:BI (reg/v:SI 342 [ signx ])
                (const_int 0 [0x0]))
            (reg:BI 360))) 66 {*cmpsi_and_1} (insn_list 53 (nil))
    (expr_list:REG_DEAD (reg/v:SI 342 [ signx ])
        (expr_list:REG_DEAD (reg:BI 360)
            (nil))))
==========================
Returns:

(insn 57 56 58 2 (set (reg:BI 363)
        (const_int 0 [0x0])) 1 {movbi} (nil)
    (nil))
==========================

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sje at cup dot hp dot com


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



More information about the Gcc-bugs mailing list