[preliminary patch] m32r: Fix so many (28) testsuite failures.

Kazu Hirata kazu@cs.umass.edu
Wed Dec 17 07:55:00 GMT 2003


Hi,

Attached is a patch to fix so many testsuite failures.

Analyzing execute/20000412-3.c a little bit, there seems to be a
problem with the register allocator.  Specifically, it assigns a
clobber, say (clobber (reg:SI 5)) in one insn even though that insn is
followed by another insn that uses (reg:SI 5).  (-fnew-ra works fine
by the way.)

Guessing the register allocator may not be good at handling
complicated insns like "movstrsi_internal" in m32r.md, I disabled the
pattern.  Doing so fixed so many regressions.  (I am showing only one
line for testcases that fail on multiple combinations of options.)

-FAIL: gcc.c-torture/compile/20010328-1.c (test for excess errors)
-FAIL: gcc.c-torture/execute/20000412-3.c execution
-FAIL: gcc.c-torture/execute/20011113-1.c execution
-FAIL: gcc.c-torture/execute/20011121-1.c execution
-FAIL: gcc.c-torture/execute/20020206-1.c execution
-FAIL: gcc.c-torture/execute/20020215-1.c execution
-FAIL: gcc.c-torture/execute/20030914-1.c execution
-FAIL: gcc.c-torture/execute/20030914-2.c execution
-FAIL: gcc.c-torture/execute/920625-1.c execution
-FAIL: gcc.c-torture/execute/921013-1.c execution
-FAIL: gcc.c-torture/execute/921117-1.c execution
-FAIL: gcc.c-torture/execute/931004-11.c execution
-FAIL: gcc.c-torture/execute/990628-1.c compilation
-FAIL: gcc.c-torture/execute/builtins/string-4.c execution
-FAIL: gcc.c-torture/execute/builtins/string-5.c execution
-FAIL: gcc.c-torture/execute/builtins/string-7.c execution
-FAIL: gcc.c-torture/execute/builtins/string-9.c execution
-FAIL: gcc.c-torture/execute/builtins/string-asm-2.c execution
-FAIL: gcc.c-torture/execute/memcpy-1.c execution
-FAIL: gcc.c-torture/execute/memcpy-bi.c execution
-FAIL: gcc.c-torture/execute/string-opt-10.c execution
-FAIL: gcc.c-torture/execute/string-opt-12.c execution
-FAIL: gcc.c-torture/execute/string-opt-6.c execution
-FAIL: gcc.c-torture/execute/string-opt-7.c execution
-FAIL: gcc.c-torture/execute/struct-ret-1.c compilation
-FAIL: gcc.c-torture/execute/va-arg-22.c execution
-FAIL: gcc.c-torture/unsorted/structret.c
-FAIL: gcc.dg/const-elim-1.c scan-assembler-not L\$?C[^A-Z]

I know I am only hiding a bug, but I thought it might be worth sharing
this.  I'll try to analyze this a little more tomorrow.

Kazu Hirata

2003-12-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md (movstrsi): Disable.
	(movstrsi_internal): Likewise.

Index: m32r.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/m32r/m32r.md,v
retrieving revision 1.33
diff -u -r1.33 m32r.md
--- m32r.md	17 Dec 2003 03:30:19 -0000	1.33
+++ m32r.md	17 Dec 2003 06:56:21 -0000
@@ -2557,7 +2557,7 @@
 		   (match_operand:BLK 1 "general_operand" ""))
 	      (use (match_operand:SI  2 "immediate_operand" ""))
 	      (use (match_operand:SI  3 "immediate_operand" ""))])]
-  ""
+  "0"
   "
 {
   if (operands[0])		/* avoid unused code messages */
@@ -2577,7 +2577,7 @@
    (set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))
    (clobber (match_scratch:SI 3 "=&r"))				;; temp 1
    (clobber (match_scratch:SI 4 "=&r"))]			;; temp 2
-  ""
+  "0"
   "* m32r_output_block_move (insn, operands); return \"\"; "
   [(set_attr "type"	"store8")
    (set_attr "length"	"72")]) ;; Maximum



More information about the Gcc-patches mailing list