[Bug target/68841] [6 Regression] gcc.c-torture/execute/pr59358.c FAILs with custom compiler flags

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Dec 16 10:40:00 GMT 2015


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

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |ktkachov at gcc dot gnu.org

--- Comment #7 from ktkachov at gcc dot gnu.org ---
Hmm, looking at it again, the if-converted sequence:
(insn 22 21 73 7 (set (reg:CCGC 17 flags)
        (compare:CCGC (reg/v:SI 88 [ i ])
            (const_int 3 [0x3]))) file.c:19 7 {*cmpsi_1}
     (nil))
(insn 73 22 74 7 (parallel [
            (set (reg:SI 94)
                (ashift:SI (reg/v:SI 88 [ i ])
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ]) zdenek.c:20 525 {*ashlsi3_1}
     (nil))
(insn 74 73 75 7 (set (reg/v:SI 93 [ k ])
        (eq:SI (reg:CCGC 17 flags)
            (const_int 0 [0]))) file.c:20 626 {*setcc_si_1_movzbl}
     (nil))

seems invalid since between the comparison and the use of the CC reg insn73
clobbers it. Presumably that's why the comparison is considered dead code.
So ifcvt should have done this. I'll have another look at ifcvt


More information about the Gcc-bugs mailing list