abs_hwi asserts that the argument is not HOST_WIDE_INT_MIN and as the (invalid) testcase shows, the function can be called with such an offset. The following patch is IMHO minimal fix, absu_hwi unlike abs_hwi allows even that value and will return (unsigned HOST_WIDE_INT) HOST_WIDE_INT_MIN in that case. The function then uses moffset in two spots which wouldn't care if the value is (unsigned HOST_WIDE_INT) HOST_WIDE_INT_MIN or HOST_WIDE_INT_MIN and wouldn't accept it (!moffset and aarch64_uimm12_shift (moffset)), then in one spot where the signedness of moffset does matter and using unsigned is the right thing - moffset < 0x1000000 - and finally has code which will handle even this value right; the assembler doesn't really care for DImode immediates if mov x1, -9223372036854775808 or mov x1, 9223372036854775808 is used and similarly it doesn't matter if we add or sub it in DImode. 2020-03-11 Jakub Jelinek <jakub@redhat.com> PR target/94121 * config/aarch64/aarch64.c (aarch64_add_offset_1): Use absu_hwi instead of abs_hwi, change moffset type to unsigned HOST_WIDE_INT. * gcc.dg/pr94121.c: New test.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
aarch64-arches.def | Loading commit data... | |
aarch64-bti-insert.c | Loading commit data... | |
aarch64-builtins.c | Loading commit data... | |
aarch64-c.c | Loading commit data... | |
aarch64-cores.def | Loading commit data... | |
aarch64-cost-tables.h | Loading commit data... | |
aarch64-d.c | Loading commit data... | |
aarch64-elf-raw.h | Loading commit data... | |
aarch64-elf.h | Loading commit data... | |
aarch64-errata.h | Loading commit data... | |
aarch64-freebsd.h | Loading commit data... | |
aarch64-fusion-pairs.def | Loading commit data... | |
aarch64-ldpstp.md | Loading commit data... | |
aarch64-linux.h | Loading commit data... | |
aarch64-modes.def | Loading commit data... | |
aarch64-netbsd.h | Loading commit data... | |
aarch64-option-extensions.def | Loading commit data... | |
aarch64-opts.h | Loading commit data... | |
aarch64-passes.def | Loading commit data... | |
aarch64-protos.h | Loading commit data... | |
aarch64-simd-builtin-types.def | Loading commit data... | |
aarch64-simd-builtins.def | Loading commit data... | |
aarch64-simd.md | Loading commit data... | |
aarch64-speculation.cc | Loading commit data... | |
aarch64-sve-builtins-base.cc | Loading commit data... | |
aarch64-sve-builtins-base.def | Loading commit data... | |
aarch64-sve-builtins-base.h | Loading commit data... | |
aarch64-sve-builtins-functions.h | Loading commit data... | |
aarch64-sve-builtins-shapes.cc | Loading commit data... | |
aarch64-sve-builtins-shapes.h | Loading commit data... | |
aarch64-sve-builtins-sve2.cc | Loading commit data... | |
aarch64-sve-builtins-sve2.def | Loading commit data... | |
aarch64-sve-builtins-sve2.h | Loading commit data... | |
aarch64-sve-builtins.cc | Loading commit data... | |
aarch64-sve-builtins.def | Loading commit data... | |
aarch64-sve-builtins.h | Loading commit data... | |
aarch64-sve.md | Loading commit data... | |
aarch64-sve2.md | Loading commit data... | |
aarch64-tune.md | Loading commit data... | |
aarch64-tuning-flags.def | Loading commit data... | |
aarch64-vxworks.h | Loading commit data... | |
aarch64.c | Loading commit data... | |
aarch64.h | Loading commit data... | |
aarch64.md | Loading commit data... | |
aarch64.opt | Loading commit data... | |
arm_acle.h | Loading commit data... | |
arm_bf16.h | Loading commit data... | |
arm_fp16.h | Loading commit data... | |
arm_neon.h | Loading commit data... | |
arm_sve.h | Loading commit data... | |
atomics.md | Loading commit data... | |
biarchilp32.h | Loading commit data... | |
biarchlp64.h | Loading commit data... | |
check-sve-md.awk | Loading commit data... | |
constraints.md | Loading commit data... | |
cortex-a57-fma-steering.c | Loading commit data... | |
driver-aarch64.c | Loading commit data... | |
falkor-tag-collision-avoidance.c | Loading commit data... | |
falkor.md | Loading commit data... | |
geniterators.sh | Loading commit data... | |
gentune.sh | Loading commit data... | |
iterators.md | Loading commit data... | |
predicates.md | Loading commit data... | |
rtems.h | Loading commit data... | |
saphira.md | Loading commit data... | |
t-aarch64 | Loading commit data... | |
t-aarch64-freebsd | Loading commit data... | |
t-aarch64-linux | Loading commit data... | |
t-aarch64-netbsd | Loading commit data... | |
t-aarch64-vxworks | Loading commit data... | |
thunderx.md | Loading commit data... | |
thunderx2t99.md | Loading commit data... | |
tsv110.md | Loading commit data... | |
x-aarch64 | Loading commit data... |