This is the mail archive of the
mailing list for the GCC project.
Re: [Patch ARM] PR target/19599 Enable sibcalls through function pointers.
On Fri, 2009-06-05 at 23:11 +0100, Ramana Radhakrishnan wrote:
> > The comment on the Ss constraint is not ARM-state specific.
> I've fixed the comments and later noticed that there was potential for
> a segfault in the compiler on a VXWorks port. I am unable to test
> whether sibling calls through function pointers work fine on a VXworks
> port but there is theoretically no reason why this case shouldn't
> work on that port. Hence I am disabling this fix for the VxWorks port.
> I would like to commit this patch instead. Ok to commit after a round
> of testing ?
> 2009-06-02 Ramana Radhakrishnan <email@example.com>
> PR target/19599
> * config/arm/predicates.md (call_insn_operand): New predicate.
> * config/arm/constraints.md ("Cs"): New register constraint.
> ("Ss"): New constraint for symbol references.
> * config/arm/arm.md (sibcall): Allow only memory indirects through
> symbol refs or register operands for operands.
> (sibcall_value): Likewise for operands.
> (*sibcall_insn): Allow register indirect sibcalls.
> (*sibcall_value): Allow register indirect sibcalls.
> * config/arm/arm.h (enum reg_class): New reg class ARM_CALLER_SAVE_REGS.
> (REG_CLASS_NAMES): Likewise.
> (REG_CLASS_CONTENTS): Likewise.
> * config/arm/arm.c (arm_function_ok_for_sibcall): Refactor
> slightly. Remove check for
> functions without decls. Handle fallout of NULL decls.
+ return \"mov%?\\t%|pc, %1\\t@ indirect sibling call \";