This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Ifcvt and epilogue insns
- To: rth at cygnus dot com
- Subject: Ifcvt and epilogue insns
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Wed, 31 May 2000 21:31:50 +0100
- cc: rearnsha at arm dot com, gcc-bugs at gcc dot gnu dot org
- Organization: ARM Ltd.
- Reply-To: rearnsha at arm dot com
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.
R.