aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/config/aarch64/aarch64.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr100302.c12
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index a863af1..c2f4b27 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -4736,7 +4736,7 @@ aarch64_mov128_immediate (rtx imm)
static unsigned int
aarch64_add_offset_1_temporaries (HOST_WIDE_INT offset)
{
- return abs_hwi (offset) < 0x1000000 ? 0 : 1;
+ return absu_hwi (offset) < 0x1000000 ? 0 : 1;
}
/* A subroutine of aarch64_add_offset. Set DEST to SRC + OFFSET for
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr100302.c b/gcc/testsuite/gcc.target/aarch64/sve/pr100302.c
new file mode 100644
index 0000000..de6e8f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr100302.c
@@ -0,0 +1,12 @@
+/* PR target/100302 */
+/* { dg-do compile } */
+/* { dg-options "-march=armv8.2-a+sve -O1 -ftree-loop-vectorize -fno-tree-scev-cprop --param vect-partial-vector-usage=0 -fvect-cost-model=unlimited" } */
+
+long int x;
+
+void
+foo (void)
+{
+ for (x = 0; x >= 0; ++x)
+ ;
+}