../../reload-branch/gcc/unwind.inc:313: error: Attempt to delete prologue/epilogue insn: (insn/f 137 136 138 0 ../../reload-branch/gcc/unwind.inc:285 (set (reg:DI 33 r35) (reg:DI 320 b0)) -1 (nil) (nil))
Reload is using registers without setting regs_ever_live. The IA-64 prologue code needs a temp register to save/restore b0, and it uses regs_ever_live to find one. Also, because we have variable size register windows, we need the regs_ever_live info to be accurate so we can set up the register windows properly.
The problem happens in inherit_one_chain, but it looks like there are other similar places that may have the same problem. Ugly patch attached that gets me past this problem. We should probably get Bernd's opinion on how he thinks this should be fixed.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
Index: reload1.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/reload1.c,v retrieving revision 1.463.2.2 diff -p -p -r1.463.2.2 reload1.c *** reload1.c 20 Mar 2005 19:49:08 -0000 1.463.2.2 --- reload1.c 1 Apr 2005 00:05:53 -0000 *************** inherit_one_chain (struct inherit_chain *** 3682,3687 **** --- 3682,3691 ---- head_rl->nregs = HARD_REGNO_NREGS (best_reg, head_rl->mode); head_rl->reginfo.regno = best_reg; head_rl->reginfo.allocated = 1; + /* ??? Need a set_reload_reg or equivalent call here? Also, everyplace else + in this file where the same construct appears? For now, just set + regs_ever_live manually. */ + regs_ever_live[best_reg] = 1; /* Extend lifetime of original reload. Set the LIVE_UNTIL_END flag so that following calls to compute_birth_death will preserve this