gcc.c-torture/compile/20001226-1.c started failing for MIPS16 after
the microMIPS patch. This was because the patch added a new check of
"extended_mips16" at the top of the "length" attribute, before the
check for branch lengths, and because "extended_mips16" was still set
to "yes" for branch instructions. However, it was really my fault
for not removing the branch check from extended_mips16 when adding
the long branch support.
Fixed as follows. Tested on mipsisa32-sde-elf and applied.
Richard
gcc/
* config/mips/mips.md (extended_mips16): Remove branch case.
(length): Remove duplicated extended_mips16 test.
Index: gcc/config/mips/mips.md
===================================================================
--- gcc/config/mips/mips.md 2013-05-19 10:57:13.399153082 +0100
+++ gcc/config/mips/mips.md 2013-05-19 10:57:24.039233504 +0100
@@ -407,7 +407,6 @@ (define_attr "cnv_mode" "unknown,I2S,I2D
;; Is this an extended instruction in mips16 mode?
(define_attr "extended_mips16" "no,yes"
(if_then_else (ior (eq_attr "move_type" "sll0")
- (eq_attr "type" "branch")
(eq_attr "jal" "direct"))
(const_string "yes")
(const_string "no")))
@@ -586,10 +585,6 @@ (define_attr "length" ""
(const_int 32)
] (const_int 48))
- (and (eq_attr "extended_mips16" "yes")
- (match_test "TARGET_MIPS16"))
- (const_int 8)
-
;; "Ghost" instructions occupy no space.
(eq_attr "type" "ghost")
(const_int 0)