[Bug target/17019] THUMB -O1: bad code generated for simple for loop

danfuzz at milk dot com gcc-bugzilla@gcc.gnu.org
Fri Aug 13 17:54:00 GMT 2004


------- Additional Comments From danfuzz at milk dot com  2004-08-13 17:54 -------
I just looked at the intermediate RTL, and, near as I can tell, as of pass 35.mach, the code is ok. Here's 
the loop skip test:

(jump_insn 44 74 72 (parallel [
            (set (pc)
                (if_then_else (lt (plus:SI (reg/v:SI 0 r0 [orig:68 a ] [68])
                            (const_int 1 [0x1]))
                        (const_int 0 [0x0]))
                    (label_ref 45)
                    (pc)))
            (clobber (reg:SI 3 r3))
        ]) 176 {*addsi3_cbranch_scratch} (insn_list 3 (nil))
    (expr_list:REG_UNUSED (reg:SI 3 r3)
        (expr_list:REG_BR_PROB (const_int 3600 [0xe10])
            (nil))))

I read that as skipping the loop if (a + 1) < 0, which I believe is correct.

-- 


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



More information about the Gcc-bugs mailing list