Patchwork [committed] Fix call branch shortening on PA

login
register
mail settings
Submitter John David Anglin
Date Dec. 6, 2012, 1:49 a.m.
Message ID <20121206014927.GA22239@hiauly1.hia.nrc.ca>
Download mbox | patch
Permalink /patch/204093/
State New
Headers show

Comments

John David Anglin - Dec. 6, 2012, 1:49 a.m.
On Mon, 12 Nov 2012, John David Anglin wrote:

> The attached change fixes PR target/55195.

The attached change updates the above fix.  It results in slightly better
code being generated by genattrab.  However, the main reason for the change
is that eliminating the use of match_test makes the fix compatible with
the 4.6 branch.

Tested on hppa-linux-gnu-gcc, hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11
on trunk and 4.7 branches with no observed regressions.  Committed to trunk
and 4.7.

Dave

Patch

Index: config/pa/pa.md
===================================================================
--- config/pa/pa.md	(revision 194055)
+++ config/pa/pa.md	(working copy)
@@ -5384,7 +5384,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 ""
@@ -5397,7 +5397,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"
@@ -5490,7 +5490,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 ""
@@ -5506,7 +5506,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"
@@ -5551,7 +5551,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 ""
@@ -5567,7 +5567,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"
@@ -5608,7 +5608,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 ""
@@ -5623,7 +5623,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"
@@ -5664,7 +5664,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 ""
@@ -5679,7 +5679,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
@@ -7209,7 +7209,7 @@ 
 }"
   [(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"
@@ -7285,7 +7285,7 @@ 
 }"
   [(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
@@ -7369,7 +7369,7 @@ 
 }"
   [(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"
@@ -7385,7 +7385,7 @@ 
 }"
   [(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
@@ -7462,7 +7462,7 @@ 
 }"
   [(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
@@ -7545,7 +7545,7 @@ 
 }"
   [(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"
@@ -7673,7 +7673,7 @@ 
 }"
   [(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"
@@ -7755,7 +7755,7 @@ 
 }"
   [(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
@@ -7845,7 +7845,7 @@ 
 }"
   [(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"
@@ -7862,7 +7862,7 @@ 
 }"
   [(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
@@ -7945,7 +7945,7 @@ 
 }"
   [(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
@@ -8034,7 +8034,7 @@ 
 }"
   [(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.
@@ -8130,7 +8130,7 @@ 
 }"
   [(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"
@@ -8147,7 +8147,7 @@ 
 }"
   [(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"
@@ -8218,7 +8218,7 @@ 
 }"
   [(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"
@@ -8236,7 +8236,7 @@ 
 }"
   [(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"
@@ -9275,7 +9275,7 @@ 
 }"
   [(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))))])