This is the mail archive of the gcc@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]
Other format: [Raw text]

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


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