aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/rs6000/predicates.md3
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ada1e30..5203b28 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2015-11-24 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/66217
+ PR target/67677
+ PR target/68332
+ * config/rs6000/predicates.md (and_operand): Check that the operand
+ is a const_int before calling rs6000_is_valid_and_mask.
+
2015-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.md (*condjump): Rename to...
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 3b1a456..362188f 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -864,7 +864,8 @@
;; Return 1 if the operand is either a non-special register or a
;; constant that can be used as the operand of a logical AND.
(define_predicate "and_operand"
- (ior (match_test "rs6000_is_valid_and_mask (op, mode)")
+ (ior (and (match_code "const_int")
+ (match_test "rs6000_is_valid_and_mask (op, mode)"))
(if_then_else (match_test "fixed_regs[CR0_REGNO]")
(match_operand 0 "gpc_reg_operand")
(match_operand 0 "logical_operand"))))