aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-04-29 11:34:50 +0200
committerJakub Jelinek <jakub@redhat.com>2021-04-29 11:34:50 +0200
commit1bb3e2c0ce6ed363c72caf814a6ba6d7b17c3e0a (patch)
tree0b869e171ab7fa0aaea622bab40d861aff3fb781 /gcc/config
parent1b462deabf70e0f4bebb1f85118827d9c2eeffb5 (diff)
downloadgcc-1bb3e2c0ce6ed363c72caf814a6ba6d7b17c3e0a.zip
gcc-1bb3e2c0ce6ed363c72caf814a6ba6d7b17c3e0a.tar.gz
gcc-1bb3e2c0ce6ed363c72caf814a6ba6d7b17c3e0a.tar.bz2
aarch64: Fix ICE in aarch64_add_offset_1_temporaries [PR100302]
In PR94121 I've changed aarch64_add_offset_1 to use absu_hwi instead of abs_hwi because offset can be HOST_WIDE_INT_MIN. As can be seen with the testcase below, aarch64_add_offset_1_temporaries suffers from the same problem and should be in sync with aarch64_add_offset_1, i.e. for HOST_WIDE_INT_MIN it needs a temporary. 2021-04-29 Jakub Jelinek <jakub@redhat.com> PR target/100302 * config/aarch64/aarch64.c (aarch64_add_offset_1_temporaries): Use absu_hwi instead of abs_hwi. * gcc.target/aarch64/sve/pr100302.c: New test.
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/aarch64/aarch64.c2
1 files changed, 1 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