This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: temporary fix for sparc v9 bootstrap failure


On Mon, Dec 17, 2001 at 10:24:06AM -0800, Dan Nicolaescu wrote:
> Right, sorry about that. Could you please check in the fix? 
> 
> 	* config/sparc/sparc.md (movdi_zero): Fix constraint. 

The following should fix things properly.


r~


        * config/sparc/sparc.md (movdi_zero): Remove.
        (movdi_insn_sp32_v9): New.

Index: sparc.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.md,v
retrieving revision 1.138
diff -c -p -d -r1.138 sparc.md
*** sparc.md	2001/12/16 02:26:58	1.138
--- sparc.md	2001/12/17 18:38:17
***************
*** 2444,2456 ****
    ;
  }")
  
- (define_insn "*movdi_zero"
-   [(set (match_operand:DI 0 "memory_operand" "")
- 	(const_int 0))]
-   "TARGET_V9"
-   "stx\\t%%g0, %0"
-   [(set_attr "type" "store")])
- 
  ;; Be careful, fmovd does not exist when !arch64.
  ;; We match MEM moves directly when we have correct even
  ;; numbered registers, but fall into splits otherwise.
--- 2444,2449 ----
***************
*** 2462,2473 ****
  ;;                       (const_int -5016)))
  ;;      (reg:DI 2 %g2))
  ;;
  (define_insn "*movdi_insn_sp32"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=T,U,o,r,r,r,?T,?f,?f,?o,?f")
!         (match_operand:DI 1 "input_operand"    "U,T,r,o,i,r,f,T,o,f,f"))]
!   "! TARGET_ARCH64 &&
!    (register_operand (operands[0], DImode)
!     || register_operand (operands[1], DImode))"
    "@
     std\\t%1, %0
     ldd\\t%1, %0
--- 2455,2492 ----
  ;;                       (const_int -5016)))
  ;;      (reg:DI 2 %g2))
  ;;
+ 
+ (define_insn "*movdi_insn_sp32_v9"
+   [(set (match_operand:DI 0 "nonimmediate_operand"
+ 					"=m,T,U,o,r,r,r,?T,?f,?f,?o,?f")
+         (match_operand:DI 1 "input_operand"
+ 					" J,U,T,r,o,i,r, f, T, o, f, f"))]
+   "! TARGET_ARCH64 && TARGET_V9
+    && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+   "@
+    stx\\t%%g0, %0
+    std\\t%1, %0
+    ldd\\t%1, %0
+    #
+    #
+    #
+    #
+    std\\t%1, %0
+    ldd\\t%1, %0
+    #
+    #
+    #"
+   [(set_attr "type" "store,store,load,*,*,*,*,fpstore,fpload,*,*,*")
+    (set_attr "length" "*,*,*,2,2,2,2,*,*,2,2,2")])
+ 
  (define_insn "*movdi_insn_sp32"
!   [(set (match_operand:DI 0 "nonimmediate_operand"
! 				"=T,U,o,r,r,r,?T,?f,?f,?o,?f")
!         (match_operand:DI 1 "input_operand"
! 				" U,T,r,o,i,r, f, T, o, f, f"))]
!   "! TARGET_ARCH64
!    && (register_operand (operands[0], DImode)
!        || register_operand (operands[1], DImode))"
    "@
     std\\t%1, %0
     ldd\\t%1, %0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]