summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-05 15:06:40 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-05 15:06:40 +0000
commitcc798c0997a6ccb3c1949a919ad4dc1b14a13268 (patch)
tree46d113e8728d9805cc2d7017928e8e6f47324579
parent674cb3595d5b649b36d2e88a49d0a3c90988c33a (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/mips/mips.md34
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.