bfin-protos.h (bfin_longcall_p): Declare.
authorBernd Schmidt <bernd.schmidt@analog.com>
Wed, 20 Jul 2005 09:48:03 +0000 (09:48 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Wed, 20 Jul 2005 09:48:03 +0000 (09:48 +0000)
commit6d459e2baebdc8206fba20befccf8ee13a0366f2
treef25b02efbca3753d97500a06c643689dce3058d0
parent67135ef48c6a53e06305d1038c4855e887568989
bfin-protos.h (bfin_longcall_p): Declare.

* config/bfin/bfin-protos.h (bfin_longcall_p): Declare.
* config/bfin/predicates.md (symbol_ref_operand): New.
(call_insn_operand): Delete.  All callers changed to use
register_no_elim_operand.
* config/bfin/bfin.c (init_cumulative_args): Initialize the new
call_cookie field.
(function_arg): Use it to generate the call's operand 2.
(bfin_longcall_p): New function.
(bfin_expand_call): Extra arg "cookie".  All callers and declaration
changed.  Emit extra USE in the pattern.  Use bfin_longcall_p to
determine if the address needs to be in a REG.
(bfin_handle_longcall_attribute): New function.
(bfin_attribute_table): Add "longcall" and "shortcall".
* config/bfin/bfin.h (CALL_NORMAL, CALL_LONG, CALL_SHORT): New macros.
(CUMULATIVE_ARGS): New member call_cookie.
(PREDICATE_CODES): Add symbol_ref_operand.
* config/bfin/bfin.md (call, call_value, sibcall, sibcall_value): Add
extra USE to the pattern.
(call_symbol, sibcall_symbol, call_value_symbol, sibcall_value_symbol):
New patterns, split off call_insn, sibcall_insn, call_value_insn and
sibcall_value_insn; now the new patterns handle direct calls and the
old ones indirect calls.
* doc/extend.texi: Mention Blackfin in longcall/shortcall docs.

From-SVN: r102191
gcc/ChangeLog
gcc/config/bfin/bfin-protos.h
gcc/config/bfin/bfin.c
gcc/config/bfin/bfin.h
gcc/config/bfin/bfin.md
gcc/config/bfin/predicates.md
gcc/doc/extend.texi