Sa Liu <[EMAIL PROTECTED]> writes:

> I'm working on GCC 4.1.1 on spu target and get following problem:
> 
> After splitting an insn with a note REG_LIBCALL, the insn is replaced by 
> some other insns, which don't attach REG_LIBCALL note any more, and the 
> original one is then deleted. While the insn REG_RETVAL still points to 
> the LIBCALL insn, which doesn't exist after the split. After reload it 
> tries to delete the LIBCALL insn referenced by RETVAL, but it has been 
> deleted already.
> 
> The question is how to avoid deleting the LIBCALL note twice? Is it 
> possible to have RETVAL note point to the new insn split from LIBCALL 
> note? Any idea to solve this problem would be appreciated... 

If the compiler splits an insn with a REG_LIBCALL note, it needs to
remove the corresponding REG_RETVAL note, or it needs to relink the
insns.  This looks like a compiler bug, in that try_split doesn't
handle REG_LIBCALL notes at all.  It's quite unusual to be able to
split a libcall insn, so it's not surprising that this has not been
noticed previously.

Ian

Reply via email to