aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/aarch64/aarch64.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr87511.c16
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8172fcd..b908601 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-10-11 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR target/87511
+ * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
+ Use HOST_WIDE_INT_1U for shift.
+
2018-10-11 Doug Rupp <rupp@adacore.com>
Olivier Hainque <hainque@adacore.com>
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index d385b24..4c77908 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -8842,7 +8842,8 @@ aarch64_mask_and_shift_for_ubfiz_p (scalar_int_mode mode, rtx mask,
return CONST_INT_P (mask) && CONST_INT_P (shft_amnt)
&& INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode)
&& exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0
- && (INTVAL (mask) & ((1 << INTVAL (shft_amnt)) - 1)) == 0;
+ && (INTVAL (mask)
+ & ((HOST_WIDE_INT_1U << INTVAL (shft_amnt)) - 1)) == 0;
}
/* Calculate the cost of calculating X, storing it in *COST. Result
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a1ba7da..f026cb2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-11 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR target/87511
+ * gcc.target/aarch64/pr87511.c: Add new test.
+
2018-10-11 David Malcolm <dmalcolm@redhat.com>
PR c++/84993
diff --git a/gcc/testsuite/gcc.target/aarch64/pr87511.c b/gcc/testsuite/gcc.target/aarch64/pr87511.c
new file mode 100644
index 0000000..9806470
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr87511.c
@@ -0,0 +1,16 @@
+/* { dg-do assemble } */
+/* { dg-options "-Os" } */
+
+int a, d;
+struct {
+ signed f5 : 26;
+ signed f6 : 12;
+} b;
+signed char c;
+void fn1() {
+ signed char *e = &c;
+ d = a * 10;
+ *e = d;
+ b.f6 = c;
+ b.f5 = 8 <= 3;
+}