predicates.md (shift_amount_operand): Remove constant range check.
2011-10-07 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/arm/predicates.md (shift_amount_operand): Remove constant range check. (shift_operator): Check range of constants for all shift operators. gcc/testsuite/ * gcc.dg/pr50193-1.c: New file. * gcc.target/arm/shiftable.c: New file. From-SVN: r179661
This commit is contained in:
parent
58eba51591
commit
55cdadd504
@ -1,3 +1,9 @@
|
||||
2011-10-07 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* config/arm/predicates.md (shift_amount_operand): Remove constant
|
||||
range check.
|
||||
(shift_operator): Check range of constants for all shift operators.
|
||||
|
||||
2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
|
||||
|
@ -129,11 +129,12 @@
|
||||
(ior (match_operand 0 "arm_rhs_operand")
|
||||
(match_operand 0 "memory_operand")))
|
||||
|
||||
;; This doesn't have to do much because the constant is already checked
|
||||
;; in the shift_operator predicate.
|
||||
(define_predicate "shift_amount_operand"
|
||||
(ior (and (match_test "TARGET_ARM")
|
||||
(match_operand 0 "s_register_operand"))
|
||||
(and (match_code "const_int")
|
||||
(match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 32"))))
|
||||
(match_operand 0 "const_int_operand")))
|
||||
|
||||
(define_predicate "arm_add_operand"
|
||||
(ior (match_operand 0 "arm_rhs_operand")
|
||||
@ -219,13 +220,20 @@
|
||||
(match_test "mode == GET_MODE (op)")))
|
||||
|
||||
;; True for shift operators.
|
||||
;; Notes:
|
||||
;; * mult is only permitted with a constant shift amount
|
||||
;; * patterns that permit register shift amounts only in ARM mode use
|
||||
;; shift_amount_operand, patterns that always allow registers do not,
|
||||
;; so we don't have to worry about that sort of thing here.
|
||||
(define_special_predicate "shift_operator"
|
||||
(and (ior (ior (and (match_code "mult")
|
||||
(match_test "power_of_two_operand (XEXP (op, 1), mode)"))
|
||||
(and (match_code "rotate")
|
||||
(match_test "GET_CODE (XEXP (op, 1)) == CONST_INT
|
||||
&& ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
|
||||
(match_code "ashift,ashiftrt,lshiftrt,rotatert"))
|
||||
(and (match_code "ashift,ashiftrt,lshiftrt,rotatert")
|
||||
(match_test "GET_CODE (XEXP (op, 1)) != CONST_INT
|
||||
|| ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
|
||||
(match_test "mode == GET_MODE (op)")))
|
||||
|
||||
;; True for shift operators which can be used with saturation instructions.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-10-07 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* gcc.dg/pr50193-1.c: New file.
|
||||
* gcc.target/arm/shiftable.c: New file.
|
||||
|
||||
2011-10-07 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/50625
|
||||
|
Loading…
Reference in New Issue
Block a user