[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