This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]