Current, indirect function call prevents tail-call optimization on AArch64.
This patch adapt the fix for PR arm/19599 to AArch64.
Is it ok for next stage 1?
Thanks.
-- Jiong
gcc/
* config/aarch64/predicates.md (aarch64_call_insn_operand): New
predicate.
* config/aarch64/constraints.md ("Ucs", "Usf"): New constraints.
* config/aarch64/aarch64.md (*sibcall_insn, *sibcall_value_insn):
Adjust for
tailcalling through registers.
* config/aarch64/aarch64.h (enum reg_class): New caller save
register class.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
* config/aarch64/aarch64.c (aarch64_function_ok_for_sibcall): Allow
tailcalling
without decls.
gcc/testsuite
*gcc.target/aarch64/tail-indirect-call.c: New test.