This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[committed] Fix assertion failure in mips_variable_issue
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 17 Feb 2009 20:52:42 +0000
- Subject: [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)