diff options
Diffstat (limited to 'gcc/config/pa/pa.md')
-rw-r--r-- | gcc/config/pa/pa.md | 60 |
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))))]) |