Ifcvt and epilogue insns

Richard Earnshaw rearnsha@arm.com
Wed May 31 13:32:00 GMT 2000

Ok, I've got the new cond_exec code for the ARM to bootstrap, and I'm now 
down to fixing some regressions revealed by the test suite.

Problem no. 1 is that I have an epilogue block that if_convert is trying 
to alter with if-case-2.  The problem block consists simply of

;; [bb 8] regs live r4, r11, r12, r13

(insn (clobber (reg r0)))

(insn (use (reg r0)))

(jump_insn (unspec_volatile [(return)] 1))

;; regs live r0, r4, r11, r12, r13

cond_exec_process_insns squashes both the clobber and the use insns (even 
though conversion of the final jump eventually fails, though I don't think 
that is relevant).  After squashing, the block fails the life-info checks 
because the return register, r0 (which wasn't set in the test), is now 
considered live at the entrance to the block.

Do I need to add some sort of use to the epilogue insn?  Or is there 
another work-around for this one?

The testcase is in execute/931004-10.c.


More information about the Gcc-bugs mailing list