diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-05 15:06:40 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-05 15:06:40 +0000 |
commit | cc798c0997a6ccb3c1949a919ad4dc1b14a13268 (patch) | |
tree | 46d113e8728d9805cc2d7017928e8e6f47324579 | |
parent | 674cb3595d5b649b36d2e88a49d0a3c90988c33a (diff) | |
download | gcc-cc798c0997a6ccb3c1949a919ad4dc1b14a13268.tar.gz |
gcc/
* config/mips/mips.md (sibcall_internal, sibcall_value_internal)
(sibcall_value_multiple_internal, call_split, call_internal_direct)
(call_direct_split, call_value_split, call_value_internal_direct)
(call_value_direct_split, call_value_multiple_split): Use jal and
jal_macro attributes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183913 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 34 |
2 files changed, 29 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c33ff0716ee..13d324c1721 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2012-02-05 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.md (sibcall_internal, sibcall_value_internal) + (sibcall_value_multiple_internal, call_split, call_internal_direct) + (call_direct_split, call_value_split, call_value_internal_direct) + (call_value_direct_split, call_value_multiple_split): Use jal and + jal_macro attributes. + +2012-02-05 Richard Sandiford <rdsandiford@googlemail.com> + * reload1.c (reload_regs_reach_end_p): Replace with... (reload_reg_rtx_reaches_end_p): ...this function. (new_spill_reg_store): Update commentary. diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 3b3eecfeb90..e5d716dfa4f 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -6119,7 +6119,8 @@ (match_operand 1 "" ""))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" { return MIPS_CALL ("j", operands, 0, 1); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) (define_expand "sibcall_value" [(parallel [(set (match_operand 0 "") @@ -6139,7 +6140,8 @@ (match_operand 2 "" "")))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" { return MIPS_CALL ("j", operands, 1, 2); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) (define_insn "sibcall_value_multiple_internal" [(set (match_operand 0 "register_operand" "") @@ -6150,7 +6152,8 @@ (match_dup 2)))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" { return MIPS_CALL ("j", operands, 1, 2); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) (define_expand "call" [(parallel [(call (match_operand 0 "") @@ -6214,13 +6217,14 @@ [(set_attr "jal" "indirect,direct")]) (define_insn "call_split" - [(call (mem:SI (match_operand 0 "call_insn_operand" "cS")) + [(call (mem:SI (match_operand 0 "call_insn_operand" "c,S")) (match_operand 1 "" "")) (clobber (reg:SI RETURN_ADDR_REGNUM)) (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" { return MIPS_CALL ("jal", operands, 0, 1); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) ;; A pattern for calls that must be made directly. It is used for ;; MIPS16 calls that the linker may need to redirect to a hard-float @@ -6240,7 +6244,7 @@ gen_call_direct_split (operands[0], operands[1])); DONE; } - [(set_attr "type" "call")]) + [(set_attr "jal" "direct")]) (define_insn "call_direct_split" [(call (mem:SI (match_operand 0 "const_call_insn_operand")) @@ -6250,7 +6254,8 @@ (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" { return MIPS_CALL ("jal", operands, 0, -1); } - [(set_attr "type" "call")]) + [(set_attr "jal" "direct") + (set_attr "jal_macro" "no")]) (define_expand "call_value" [(parallel [(set (match_operand 0 "") @@ -6284,13 +6289,14 @@ (define_insn "call_value_split" [(set (match_operand 0 "register_operand" "") - (call (mem:SI (match_operand 1 "call_insn_operand" "cS")) + (call (mem:SI (match_operand 1 "call_insn_operand" "c,S")) (match_operand 2 "" ""))) (clobber (reg:SI RETURN_ADDR_REGNUM)) (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" { return MIPS_CALL ("jal", operands, 1, 2); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) ;; See call_internal_direct. (define_insn_and_split "call_value_internal_direct" @@ -6309,7 +6315,7 @@ operands[2])); DONE; } - [(set_attr "type" "call")]) + [(set_attr "jal" "direct")]) (define_insn "call_value_direct_split" [(set (match_operand 0 "register_operand") @@ -6320,7 +6326,8 @@ (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" { return MIPS_CALL ("jal", operands, 1, -1); } - [(set_attr "type" "call")]) + [(set_attr "jal" "direct") + (set_attr "jal_macro" "no")]) ;; See comment for call_internal. (define_insn_and_split "call_value_multiple_internal" @@ -6345,7 +6352,7 @@ (define_insn "call_value_multiple_split" [(set (match_operand 0 "register_operand" "") - (call (mem:SI (match_operand 1 "call_insn_operand" "cS")) + (call (mem:SI (match_operand 1 "call_insn_operand" "c,S")) (match_operand 2 "" ""))) (set (match_operand 3 "register_operand" "") (call (mem:SI (match_dup 1)) @@ -6354,7 +6361,8 @@ (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" { return MIPS_CALL ("jal", operands, 1, 2); } - [(set_attr "type" "call")]) + [(set_attr "jal" "indirect,direct") + (set_attr "jal_macro" "no")]) ;; Call subroutine returning any type. |