From: sje Date: Thu, 28 Jan 2016 22:25:55 +0000 (+0000) Subject: 2016-01-28 Steve Ellcey X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=912531832289c6321fdc427512c8d400875c5e68;p=thirdparty%2Fgcc.git 2016-01-28 Steve Ellcey PR target/68400 * config/mips/mips.c (and_operands_ok): Add MIPS16 check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232952 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4df81d56a199..209bb0d0c209 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-28 Steve Ellcey + + PR target/68400 + * config/mips/mips.c (and_operands_ok): Add MIPS16 check. + 2016-01-28 Jakub Jelinek PR middle-end/69542 diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 890e947c0942..84fbc9776df9 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -8006,9 +8006,18 @@ mask_low_and_shift_p (machine_mode mode, rtx mask, rtx shift, int maxlen) 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