aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>2013-07-25 09:40:11 +0000
committerRamana Radhakrishnan <ramana@gcc.gnu.org>2013-07-25 09:40:11 +0000
commit0b93d3b68572cc36423a864d26eb74321eb2c4af (patch)
tree96b8625fb3b5d3dd8f607b53998c565ff0b52629
parent67b1d0046b856e95b9c2086be14d1af0d91d8f90 (diff)
downloadgcc-0b93d3b68572cc36423a864d26eb74321eb2c4af.zip
gcc-0b93d3b68572cc36423a864d26eb74321eb2c4af.tar.gz
gcc-0b93d3b68572cc36423a864d26eb74321eb2c4af.tar.bz2
Fix PR target/57731 PR target/57837
2013-07-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> PR target/19599 PR target/57731 PR target/57837 * config/arm/arm.md ("*sibcall_value_insn): Replace use of Ss with US. Adjust output for v5 and v4t. (*sibcall_value_insn): Likewise and loosen predicate on operand0. * config/arm/constraints.md ("Ss"): Rename to US. From-SVN: r201240
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/arm/arm.md10
-rw-r--r--gcc/config/arm/constraints.md13
3 files changed, 23 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa582e3..87f1deb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2013-07-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/19599
+ PR target/57731
+ PR target/57748
+ * config/arm/arm.md ("*sibcall_value_insn): Replace use of
+ Ss with US. Adjust output for v5 and v4t.
+ (*sibcall_value_insn): Likewise and loosen predicate on
+ operand0.
+ * config/arm/constraints.md ("Ss"): Rename to US.
+
2013-07-25 Terry Guo <terry.guo@arm.com>
* config/arm/arm.c (thumb1_size_rtx_costs): Assign proper cost for
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 86e41a2..1850374 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -9619,7 +9619,7 @@
)
(define_insn "*sibcall_insn"
- [(call (mem:SI (match_operand:SI 0 "call_insn_operand" "Cs,Ss"))
+ [(call (mem:SI (match_operand:SI 0 "call_insn_operand" "Cs, US"))
(match_operand 1 "" ""))
(return)
(use (match_operand 2 "" ""))]
@@ -9630,7 +9630,7 @@
else
{
if (arm_arch5 || arm_arch4t)
- return \" bx\\t%0\\t%@ indirect register sibling call\";
+ return \" bx%?\\t%0\\t%@ indirect register sibling call\";
else
return \"mov%?\\t%|pc, %0\\t%@ indirect register sibling call\";
}
@@ -9639,8 +9639,8 @@
)
(define_insn "*sibcall_value_insn"
- [(set (match_operand 0 "s_register_operand" "")
- (call (mem:SI (match_operand:SI 1 "call_insn_operand" "Cs,Ss"))
+ [(set (match_operand 0 "" "")
+ (call (mem:SI (match_operand:SI 1 "call_insn_operand" "Cs,US"))
(match_operand 2 "" "")))
(return)
(use (match_operand 3 "" ""))]
@@ -9651,7 +9651,7 @@
else
{
if (arm_arch5 || arm_arch4t)
- return \"bx\\t%1\";
+ return \"bx%?\\t%1\";
else
return \"mov%?\\t%|pc, %1\\t@ indirect sibling call \";
}
diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md
index e7cafe5..e2a3099 100644
--- a/gcc/config/arm/constraints.md
+++ b/gcc/config/arm/constraints.md
@@ -21,7 +21,7 @@
;; The following register constraints have been used:
;; - in ARM/Thumb-2 state: t, w, x, y, z
;; - in Thumb state: h, b
-;; - in both states: l, c, k, q
+;; - in both states: l, c, k, q, US
;; In ARM state, 'l' is an alias for 'r'
;; 'f' and 'v' were previously used for FPA and MAVERICK registers.
@@ -417,6 +417,12 @@
0)
&& GET_CODE (XEXP (op, 0)) != POST_INC")))
+(define_constraint "US"
+ "@internal
+ US is a symbol reference."
+ (match_code "symbol_ref")
+)
+
;; We used to have constraint letters for S and R in ARM state, but
;; all uses of these now appear to have been removed.
@@ -424,8 +430,3 @@
;; this wasn't really a valid memory constraint. Again, all uses of
;; this now seem to have been removed.
-(define_constraint "Ss"
- "@internal
- Ss is a symbol reference."
- (match_code "symbol_ref")
-)