--- gcc/config/vax/vax.md 2018/04/24 18:22:17 1.1.1.2 +++ gcc/config/vax/vax.md 2018/04/24 18:35:22 1.1.1.4 @@ -1,5 +1,5 @@ ;;- Machine description for GNU compiler, Vax Version -;; Copyright (C) 1987, 1988, 1991, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1987, 1988, 1991, 1994, 1995 Free Software Foundation, Inc. ;; This file is part of GNU CC. @@ -15,7 +15,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU CC; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;; the Free Software Foundation, 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. ;;- Instruction patterns. When multiple patterns apply, @@ -1340,6 +1341,7 @@ operands[0] = adj_offsettable_operand (operands[0], INTVAL (operands[2]) / 8); + CC_STATUS_INIT; if (INTVAL (operands[1]) == 8) return \"movb %3,%0\"; return \"movw %3,%0\"; @@ -1419,11 +1421,12 @@ ;; When the field position and size are constant and the destination ;; is a register, extv and extzv are much slower than a rotate followed -;; by a bicl or sign extension. +;; by a bicl or sign extension. Because we might end up choosing ext[z]v +;; anyway, we can't allow immediate values for the primary source operand. (define_insn "" [(set (match_operand:SI 0 "general_operand" "=g") - (sign_extract:SI (match_operand:SI 1 "nonmemory_operand" "r") + (sign_extract:SI (match_operand:SI 1 "nonimmediate_operand" "ro") (match_operand:QI 2 "general_operand" "g") (match_operand:SI 3 "general_operand" "g")))] "" @@ -1440,7 +1443,7 @@ (define_insn "" [(set (match_operand:SI 0 "general_operand" "=g") - (zero_extract:SI (match_operand:SI 1 "register_operand" "ri") + (zero_extract:SI (match_operand:SI 1 "nonimmediate_operand" "ro") (match_operand:QI 2 "general_operand" "g") (match_operand:SI 3 "general_operand" "g")))] ""