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]

[committed] Fix assertion failure in mips_variable_issue


Testing on mipsisa64-elf showed an ICE in mips_variable_issue.
(Unfortunately I no longer have a record of which test triggered it,
but it was one of the C torture ones.)  The problem is that lui_movf
instructions have type "multi" but are not split.

The right long-term fix is to split them, but that's a bit too dangerous
for stage 4.  This patch therefore reclassifies them as "unknown" instead.

Tested on mipsisa64-elf and applied.

Richard


gcc/
	* config/mips/mips.md (type): Reclassify lui_movf as "unknown".

Index: gcc/config/mips/mips.md
===================================================================
--- gcc/config/mips/mips.md	2009-02-15 11:01:22.000000000 +0000
+++ gcc/config/mips/mips.md	2009-02-15 11:06:07.000000000 +0000
@@ -404,7 +404,7 @@ (define_attr "type"
 	 (eq_attr "move_type" "andi") (const_string "logical")
 
 	 ;; These types of move are always split.
-	 (eq_attr "move_type" "constN,lui_movf,shift_shift")
+	 (eq_attr "move_type" "constN,shift_shift")
 	   (const_string "multi")
 
 	 ;; These types of move are split for doubleword modes only.
@@ -413,6 +413,8 @@ (define_attr "type"
 	   (const_string "multi")
 	 (eq_attr "move_type" "move") (const_string "move")
 	 (eq_attr "move_type" "const") (const_string "const")]
+	;; We classify "lui_movf" as "unknown" rather than "multi"
+	;; because we don't split it.  FIXME: we should split instead.
 	(const_string "unknown")))
 
 ;; Mode for conversion types (fcvt)


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