OSDN Git Service

* config/bfin/bfin-protos.h (bfin_longcall_p): Declare.
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jul 2005 09:48:03 +0000 (09:48 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jul 2005 09:48:03 +0000 (09:48 +0000)
commit7b6ef6dd315e44d3d03fba6f0a6c2622c62557af
treef25b02efbca3753d97500a06c643689dce3058d0
parent9cfac6f2ea845f7485419c65a9014298e450bf94
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102191 138bc75d-0d04-0410-961f-82ee72b054a4
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