------- Comment #5 from rguenth at gcc dot gnu dot org 2007-05-20 11:52 ------- As to comment #2, while we need one more register for the comparison, a and b are available in the argument frame, so there's no reason to "spill" them, we just need to reload them into one of the many free registers _after_ the asm(). Instead of leaving us with
(insn 12 15 13 2 /home/richard/src/dataflow-branch/gcc/testsuite/gcc.target/i386/pr21291.c:27 (set (reg:CCZ 17 flags) (compare:CCZ (mem/c/i:SI (plus:SI (reg/f:SI 16 argp) (const_int 4 [0x4])) [0 alen+0 S4 A32]) (mem/c/i:SI (plus:SI (reg/f:SI 6 bp) (const_int 20 [0x14])) [0 blen+0 S4 A32]))) 2 {*cmpsi_1_insn} (nil)) which is not matching *cmpsi_1_insn predicates (the above is from greg dump). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32004