Bug in new genrecog?

Richard Henderson rth@cygnus.com
Wed Oct 6 12:29:00 GMT 1999


On Wed, Oct 06, 1999 at 12:00:10PM -0700, Mark Mitchell wrote:
> (define_expand "tablejump_internal3"
>   [(parallel [(set (pc)
> 		   (plus:SI (match_operand:SI 0 "register_operand" "d")
> 			    (label_ref:SI (match_operand:SI 1 "" ""))))
> 	      (use (label_ref:SI (match_dup 1)))])]
>   ""
>   "")

Try this.  


r~



Index: config/mips/mips.md
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/mips/mips.md,v
retrieving revision 1.64
diff -c -p -d -r1.64 mips.md
*** mips.md	1999/10/04 09:26:57	1.64
--- mips.md	1999/10/06 19:27:10
*************** move\\t%0,%z4\\n\\
*** 6161,6200 ****
  ;; byte loads.
  
  (define_insn ""
-   [(set (match_operand:BLK 0 "memory_operand" "=d")	;; destination
- 	(match_operand:BLK 1 "memory_operand" "d"))	;; source
-    (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
-    (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
-    (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
-    (clobber (match_scratch:SI 7 "=&d"))			;; temp 4
-    (use (match_operand:SI 2 "small_int" "I"))		;; # bytes to move
-    (use (match_operand:SI 3 "small_int" "I"))		;; alignment
-    (use (const_int 0))]					;; normal block move
-   "TARGET_MIPS16"
-   "* return output_block_move (insn, operands, 4, BLOCK_MOVE_NORMAL);"
-   [(set_attr "type"	"multi")
-    (set_attr "mode"	"none")
-    (set_attr "length"	"80")])
- 
- (define_insn ""
-   [(set (match_operand:BLK 0 "memory_operand" "=d")	;; destination
- 	(match_operand:BLK 1 "memory_operand" "o"))	;; source
-    (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
-    (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
-    (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
-    (clobber (match_scratch:SI 7 "=&d"))			;; temp 4
-    (use (match_operand:SI 2 "small_int" "I"))		;; # bytes to move
-    (use (match_operand:SI 3 "small_int" "I"))		;; alignment
-    (use (const_int 0))]					;; normal block move
-   "TARGET_MIPS16"
-   "* return output_block_move (insn, operands, 4, BLOCK_MOVE_NORMAL);"
-   [(set_attr "type"	"multi")
-    (set_attr "mode"	"none")
-    (set_attr "length"	"80")])
- 
- (define_insn ""
    [(set (match_operand:BLK 0 "memory_operand" "=o")	;; destination
! 	(match_operand:BLK 1 "memory_operand" "d"))	;; source
     (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
     (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
     (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
--- 6161,6168 ----
  ;; byte loads.
  
  (define_insn ""
    [(set (match_operand:BLK 0 "memory_operand" "=o")	;; destination
! 	(match_operand:BLK 1 "memory_operand" "o"))	;; source
     (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
     (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
     (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
*************** move\\t%0,%z4\\n\\
*** 6268,6275 ****
     (set_attr "length"	"80")])
  
  (define_insn ""
!   [(set (match_operand:BLK 0 "memory_operand" "=d")	;; destination
! 	(match_operand:BLK 1 "memory_operand" "d"))	;; source
     (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
     (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
     (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
--- 6236,6243 ----
     (set_attr "length"	"80")])
  
  (define_insn ""
!   [(set (match_operand:BLK 0 "memory_operand" "=o")	;; destination
! 	(match_operand:BLK 1 "memory_operand" "o"))	;; source
     (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
     (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
     (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
*************** move\\t%0,%z4\\n\\
*** 6297,6318 ****
    "* return output_block_move (insn, operands, 4, BLOCK_MOVE_LAST);"
    [(set_attr "type"	"store")
     (set_attr "mode"	"none")])
- 
- (define_insn ""
-   [(set (match_operand:BLK 0 "memory_operand" "=d")	;; destination
- 	(match_operand:BLK 1 "memory_operand" "d"))	;; source
-    (clobber (match_scratch:SI 4 "=&d"))			;; temp 1
-    (clobber (match_scratch:SI 5 "=&d"))			;; temp 2
-    (clobber (match_scratch:SI 6 "=&d"))			;; temp 3
-    (clobber (match_scratch:SI 7 "=&d"))			;; temp 4
-    (use (match_operand:SI 2 "small_int" "I"))		;; # bytes to move
-    (use (match_operand:SI 3 "small_int" "I"))		;; alignment
-    (use (const_int 2))]					;; just last store of block move
-   "TARGET_MIPS16"
-   "* return output_block_move (insn, operands, 4, BLOCK_MOVE_LAST);"
-   [(set_attr "type"	"store")
-    (set_attr "mode"	"none")])
- 
  
  ;;
  ;;  ....................
--- 6265,6270 ----
*************** move\\t%0,%z4\\n\\
*** 9141,9147 ****
  (define_expand "tablejump_internal3"
    [(parallel [(set (pc)
  		   (plus:SI (match_operand:SI 0 "register_operand" "d")
! 			    (label_ref:SI (match_operand:SI 1 "" ""))))
  	      (use (label_ref:SI (match_dup 1)))])]
    ""
    "")
--- 9093,9099 ----
  (define_expand "tablejump_internal3"
    [(parallel [(set (pc)
  		   (plus:SI (match_operand:SI 0 "register_operand" "d")
! 			    (label_ref:SI (match_operand 1 "" ""))))
  	      (use (label_ref:SI (match_dup 1)))])]
    ""
    "")
*************** move\\t%0,%z4\\n\\
*** 9149,9155 ****
  (define_expand "tablejump_mips161"
    [(set (pc) (plus:SI (sign_extend:SI
  		       (match_operand:HI 0 "register_operand" "d"))
! 		      (label_ref:SI (match_operand:SI 1 "" ""))))]
    "TARGET_MIPS16 && !(Pmode == DImode)"
    "
  {
--- 9101,9107 ----
  (define_expand "tablejump_mips161"
    [(set (pc) (plus:SI (sign_extend:SI
  		       (match_operand:HI 0 "register_operand" "d"))
! 		      (label_ref:SI (match_operand 1 "" ""))))]
    "TARGET_MIPS16 && !(Pmode == DImode)"
    "
  {
*************** move\\t%0,%z4\\n\\
*** 9171,9177 ****
  (define_expand "tablejump_mips162"
    [(set (pc) (plus:DI (sign_extend:DI
  		       (match_operand:HI 0 "register_operand" "d"))
! 		      (label_ref:DI (match_operand:SI 1 "" ""))))]
    "TARGET_MIPS16 && Pmode == DImode"
    "
  {
--- 9123,9129 ----
  (define_expand "tablejump_mips162"
    [(set (pc) (plus:DI (sign_extend:DI
  		       (match_operand:HI 0 "register_operand" "d"))
! 		      (label_ref:DI (match_operand 1 "" ""))))]
    "TARGET_MIPS16 && Pmode == DImode"
    "
  {
*************** move\\t%0,%z4\\n\\
*** 9200,9206 ****
  (define_insn ""
    [(set (pc)
  	(plus:SI (match_operand:SI 0 "register_operand" "d")
! 		 (label_ref:SI (match_operand:SI 1 "" ""))))
     (use (label_ref:SI (match_dup 1)))]
    "!(Pmode == DImode) && next_active_insn (insn) != 0
     && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
--- 9152,9158 ----
  (define_insn ""
    [(set (pc)
  	(plus:SI (match_operand:SI 0 "register_operand" "d")
! 		 (label_ref:SI (match_operand 1 "" ""))))
     (use (label_ref:SI (match_dup 1)))]
    "!(Pmode == DImode) && next_active_insn (insn) != 0
     && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
*************** move\\t%0,%z4\\n\\
*** 9219,9225 ****
  (define_expand "tablejump_internal4"
    [(parallel [(set (pc)
  		   (plus:DI (match_operand:DI 0 "se_register_operand" "d")
! 			    (label_ref:DI (match_operand:SI 1 "" ""))))
  	      (use (label_ref:DI (match_dup 1)))])]
    ""
    "")
--- 9171,9177 ----
  (define_expand "tablejump_internal4"
    [(parallel [(set (pc)
  		   (plus:DI (match_operand:DI 0 "se_register_operand" "d")
! 			    (label_ref:DI (match_operand 1 "" ""))))
  	      (use (label_ref:DI (match_dup 1)))])]
    ""
    "")
*************** move\\t%0,%z4\\n\\
*** 9231,9237 ****
  (define_insn ""
    [(set (pc)
  	(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! 		 (label_ref:DI (match_operand:SI 1 "" ""))))
     (use (label_ref:DI (match_dup 1)))]
    "Pmode == DImode && next_active_insn (insn) != 0
     && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
--- 9183,9189 ----
  (define_insn ""
    [(set (pc)
  	(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! 		 (label_ref:DI (match_operand 1 "" ""))))
     (use (label_ref:DI (match_dup 1)))]
    "Pmode == DImode && next_active_insn (insn) != 0
     && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC


More information about the Gcc-bugs mailing list