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

--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
gcc-4.9 combines udivmoddi4 to :

(insn 30 5 8 2 (set (reg:DI 103)
        (const_int 16 [0x10])) pr65693.ii:6 -1
     (nil))

[...]

(insn 9 8 10 2 (parallel [
            (set (reg:DI 94)
                (udiv:DI (reg:DI 92)
                    (reg:DI 103)))
            (set (reg:DI 95)
                (umod:DI (reg:DI 92)
                    (reg:DI 103)))
            (clobber (reg:CC 17 flags))
        ]) pr65693.ii:6 348 {*udivmoddi4}
     (expr_list:REG_DEAD (reg:DI 103)
        (expr_list:REG_DEAD (reg:DI 92)
            (expr_list:REG_UNUSED (reg:DI 95)
                (expr_list:REG_UNUSED (reg:CC 17 flags)
                    (nil))))))


Trying 30 -> 9:

...

Successfully matched this instruction:
(set (reg:DI 94)
    (lshiftrt:DI (reg:DI 92)
        (const_int 4 [0x4])))

For some reason gcc-5 doesn't do this conversion anymore.

Reply via email to