Fix PR target/19599 - tailcall function pointers.
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>
Wed, 15 May 2013 11:49:06 +0000 (11:49 +0000)
committerRamana Radhakrishnan <ramana@gcc.gnu.org>
Wed, 15 May 2013 11:49:06 +0000 (11:49 +0000)
commit9adcfa3c1f4f3194b50c893f06bb52f1058aebe8
tree4c80c0aab83b8d5939ca0d746181b00b92cfeca2
parentccb3ad87d42e58bbd93e36f7c8787e9ae1c075a2
Fix PR target/19599 - tailcall function pointers.

2013-05-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/19599
* config/arm/predicates.md (call_insn_operand): New predicate.
* config/arm/constraints.md ("Cs", "Ss"):  New constraints.
* config/arm/arm.md (*call_insn, *call_value_insn): Match only
if insn is not a tail call.
(*sibcall_insn, *sibcall_value_insn): Adjust for tailcalling through
registers.
* config/arm/arm.h (enum reg_class): New caller save register class.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
* config/arm/arm.c (arm_function_ok_for_sibcall): Allow tailcalling
without decls.

2013-05-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/19599
* gcc.target/arm/pr40887.c: Adjust testcase.
* gcc.target/arm/pr19599.c: New test.

From-SVN: r198928
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/constraints.md
gcc/config/arm/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr19599.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/pr40887.c