This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patches] Fixes for the libjava failure
On Sat, Aug 04, 2001 at 10:05:57PM +0200, Jan Hubicka wrote:
> It is caused by the instruction:
> (insn 148 147 272 (set (reg:DF 102)
> (mem/u/f:DF (plus:SI (reg:SI 3 ebx)
> (const:SI (unspec:SI[
> (symbol_ref/u:SI ("*.LC4"))
> ] 7))) 7)) 95 {*movdf_integer} (nil)
> (expr_list:REG_EH_REGION (const_int 1 [0x1])
Hum. I don't think unchanging memories can trap. Certainly
this one can't, and no counter-examples come to mind. That,
however, is a different problem.
> * local-alloc.c (locall_alloc): Purge the CFG after update_equiv_regs.
I don't think this is sufficient, or even the problem.
See the code beginning
/* Now scan all regs killed in an insn to see if any of them are
registers only used that once. If so, see if we can replace the
reference with the equivalent from. If we can, delete the
initializing reference and this register will go away. If we
can't replace the reference, and the initialzing reference is
within the same loop (or in an inner loop), then move the register
initialization just before the use, so that they are in the same
basic block.
I think we need to suppress the move if can_throw_internal.
r~