aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/pa/pa.md')
-rw-r--r--gcc/config/pa/pa.md60
1 files changed, 33 insertions, 27 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 570245bd4db..5ef7adb23b2 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -2051,6 +2051,12 @@
""
"
{
+ /* A TLS symbol reference is not a valid move source operand.
+ pa_emit_move_sequence can only handle them prior to reload.
+ There is also no way to reload a TLS symbol reference, so
+ we must reject them after reload starts. */
+ if (PA_SYMBOL_REF_TLS_P (operands[1]) && !can_create_pseudo_p ())
+ FAIL;
if (pa_emit_move_sequence (operands, SImode, 0))
DONE;
}")
@@ -5341,7 +5347,7 @@
"* return pa_output_mul_insn (0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_insn ""
@@ -5354,7 +5360,7 @@
"* return pa_output_mul_insn (0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_expand "muldi3"
@@ -5447,7 +5453,7 @@
return pa_output_div_insn (operands, 0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_insn ""
@@ -5463,7 +5469,7 @@
return pa_output_div_insn (operands, 0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_expand "udivsi3"
@@ -5508,7 +5514,7 @@
return pa_output_div_insn (operands, 1, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_insn ""
@@ -5524,7 +5530,7 @@
return pa_output_div_insn (operands, 1, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_expand "modsi3"
@@ -5565,7 +5571,7 @@
return pa_output_mod_insn (0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_insn ""
@@ -5580,7 +5586,7 @@
return pa_output_mod_insn (0, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_expand "umodsi3"
@@ -5621,7 +5627,7 @@
return pa_output_mod_insn (1, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
(define_insn ""
@@ -5636,7 +5642,7 @@
return pa_output_mod_insn (1, insn);"
[(set_attr "type" "milli")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_millicode_call (insn)")))])
;;- and instructions
@@ -7214,7 +7220,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
(define_insn "call_symref_pic"
@@ -7293,7 +7299,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -7380,7 +7386,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
(define_insn "call_reg"
@@ -7396,7 +7402,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -7476,7 +7482,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -7562,7 +7568,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 12)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 12)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
(define_expand "call_value"
@@ -7690,7 +7696,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
(define_insn "call_val_symref_pic"
@@ -7775,7 +7781,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -7868,7 +7874,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "call")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 0)")))])
(define_insn "call_val_reg"
@@ -7885,7 +7891,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -7971,7 +7977,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
;; This pattern is split if it is necessary to save and restore the
@@ -8063,7 +8069,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "dyncall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 12)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 12)]
(symbol_ref "pa_attr_length_indirect_call (insn)")))])
;; Call subroutine returning any type.
@@ -8159,7 +8165,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "sibcall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 1)")))])
(define_insn "sibcall_internal_symref_64bit"
@@ -8176,7 +8182,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "sibcall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 1)")))])
(define_expand "sibcall_value"
@@ -8247,7 +8253,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "sibcall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 1)")))])
(define_insn "sibcall_value_internal_symref_64bit"
@@ -8265,7 +8271,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "sibcall")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 8)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 8)]
(symbol_ref "pa_attr_length_call (insn, 1)")))])
(define_insn "nop"
@@ -9304,7 +9310,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
}"
[(set_attr "type" "sh_func_adrs")
(set (attr "length")
- (cond [(and (match_test "0") (eq (const_int 0) (pc))) (const_int 28)]
+ (cond [(and (const_int 0) (eq (const_int 0) (pc))) (const_int 28)]
(plus (symbol_ref "pa_attr_length_millicode_call (insn)")
(const_int 20))))])