Index: b/package/gcc/5.4.0/100-mips16-bug-68400.patch =================================================================== --- /dev/null +++ b/package/gcc/5.4.0/100-mips16-bug-68400.patch @@ -0,0 +1,24 @@ +--- a/gcc/config/mips/mips.c 2016/01/25 20:33:52 232803 ++++ a/gcc/config/mips/mips.c 2016/01/28 22:25:55 232952 +@@ -8006,9 +8006,18 @@ + bool + and_operands_ok (machine_mode mode, rtx op1, rtx op2) + { +- return (memory_operand (op1, mode) +- ? and_load_operand (op2, mode) +- : and_reg_operand (op2, mode)); ++ ++ if (memory_operand (op1, mode)) ++ { ++ if (TARGET_MIPS16) { ++ struct mips_address_info addr; ++ if (!mips_classify_address (&addr, op1, mode, false)) ++ return false; ++ } ++ return and_load_operand (op2, mode); ++ } ++ else ++ return and_reg_operand (op2, mode); + } + + /* The canonical form of a mask-low-and-shift-left operation is