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