This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
a sparcv9 haifa abort
- To: egcs-patches at cygnus dot com
- Subject: a sparcv9 haifa abort
- From: Richard Henderson <rth at cygnus dot com>
- Date: Wed, 3 Jun 1998 23:33:59 -0700
- Reply-To: Richard Henderson <rth at cygnus dot com>
The following
;; SPARC V9 deprecates std. Split it here.
(define_split
[(set (match_operand:DI 0 "memory_operand" "=m")
(match_operand:DI 1 "register_operand" "r"))]
"TARGET_V9 && ! TARGET_ARCH64 && reload_completed
&& REGNO (operands[1]) < 32 && ! MEM_VOLATILE_P (operands[0])
&& offsettable_memref_p (operands[0])"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 4) (match_dup 5))]
"operands[3] = gen_highpart (SImode, operands[1]);
operands[5] = gen_lowpart (SImode, operands[1]);
operands[4] = adj_offsettable_operand (operands[0], 4);
PUT_MODE (operands[4], SImode);
operands[2] = copy_rtx (operands[0]);
PUT_MODE (operands[2], SImode);")
gives haifa indigension, because sparc defines MAX_MOVE to 8.
Thoughts on this fix?
r~
Index: haifa-sched.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/haifa-sched.c,v
retrieving revision 1.55
diff -c -p -d -r1.55 haifa-sched.c
*** haifa-sched.c 1998/05/19 08:42:33 1.55
--- haifa-sched.c 1998/06/04 06:33:21
*************** update_flow_info (notes, first, last, or
*** 7980,7986 ****
break;
/* Likewise for multi-word memory references. */
if (GET_CODE (orig_dest) == MEM
! && SIZE_FOR_MODE (orig_dest) > MOVE_MAX)
break;
abort ();
}
--- 7980,7986 ----
break;
/* Likewise for multi-word memory references. */
if (GET_CODE (orig_dest) == MEM
! && SIZE_FOR_MODE (orig_dest) > UNITS_PER_WORD)
break;
abort ();
}