This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: delete LIBCALL note after split
Sa Liu <SALIU@de.ibm.com> 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