Ifcvt and epilogue insns
Richard Henderson
rth@cygnus.com
Wed May 31 17:01:00 GMT 2000
On Wed, May 31, 2000 at 09:31:50PM +0100, Richard Earnshaw wrote:
> cond_exec_process_insns squashes both the clobber and the use insns (even
> though conversion of the final jump eventually fails...
I saw this on ia64 too. I thought I'd already committed the
change, but I see that I hadn't. It turns out that we just
can't ever ignore the clobber, which is kinda too bad.
The only thing we might could do is have the optimizers know
about a synthetic insn (cond_exec (pred) (clobber)), just as
they know about just plain (clobber) now. But this was more
of a change than I really wanted to make at the moment.
r~
* ifcvt.c (cond_exec_process_insns): Don't ever ignore clobbers.
Index: ifcvt.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ifcvt.c,v
retrieving revision 1.25
diff -c -p -d -r1.25 ifcvt.c
*** ifcvt.c 2000/05/31 07:33:02 1.25
--- ifcvt.c 2000/05/31 23:57:11
*************** cond_exec_process_insns (start, end, tes
*** 216,225 ****
if (GET_CODE (insn) != INSN && GET_CODE (insn) != CALL_INSN)
abort ();
! /* Remove USE and CLOBBER insns that get in the way. */
! if (reload_completed
! && (GET_CODE (PATTERN (insn)) == USE
! || GET_CODE (PATTERN (insn)) == CLOBBER))
{
/* ??? Ug. Actually unlinking the thing is problematic,
given what we'd have to coordinate with our callers. */
--- 216,223 ----
if (GET_CODE (insn) != INSN && GET_CODE (insn) != CALL_INSN)
abort ();
! /* Remove USE insns that get in the way. */
! if (reload_completed && GET_CODE (PATTERN (insn)) == USE)
{
/* ??? Ug. Actually unlinking the thing is problematic,
given what we'd have to coordinate with our callers. */
More information about the Gcc-bugs
mailing list