From: Andrea Corallo Date: Thu, 16 Apr 2020 07:55:51 +0000 (+0200) Subject: aarch64: backport fix for PR target/94530 X-Git-Tag: misc/first-auto-changelog-9~111 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5e022e3b3f7b2109f47fefffd6368fe3d378bdaa;p=thirdparty%2Fgcc.git aarch64: backport fix for PR target/94530 gcc/ChangeLog 2020-04-16 Andrea Corallo Backport from mainline. 2020-04-15 Andrea Corallo Backport from mainline. 2020-04-09 Andrea Corallo PR target/94530 * gcc.target/aarch64/pr94530.c: New test. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b29a54e90a5..4222eed2d9be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2020-04-20 Andrea Corallo + + Backport from mainline. + 2020-04-15 Andrea Corallo + + PR target/94530 + * config/aarch64/falkor-tag-collision-avoidance.c + (valid_src_p): Check for aarch64_address_info type before + accessing base field. + 2020-04-20 Tamar Christina Backport from mainline. diff --git a/gcc/config/aarch64/falkor-tag-collision-avoidance.c b/gcc/config/aarch64/falkor-tag-collision-avoidance.c index 779dee81f7f4..698d1595d0a6 100644 --- a/gcc/config/aarch64/falkor-tag-collision-avoidance.c +++ b/gcc/config/aarch64/falkor-tag-collision-avoidance.c @@ -537,6 +537,13 @@ valid_src_p (rtx src, rtx_insn *insn, struct loop *loop, bool *pre_post, if (!aarch64_classify_address (&addr, XEXP (x, 0), mode, true)) return false; + if (addr.type != ADDRESS_REG_IMM + && addr.type != ADDRESS_REG_WB + && addr.type != ADDRESS_REG_REG + && addr.type != ADDRESS_REG_UXTW + && addr.type != ADDRESS_REG_SXTW) + return false; + unsigned regno = REGNO (addr.base); if (global_regs[regno] || fixed_regs[regno]) return false; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a52e97da05f..d0117119d4b8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-04-20 Andrea Corallo + + Backport from mainline. + 2020-04-09 Andrea Corallo Backport from mainline. diff --git a/gcc/testsuite/gcc.target/aarch64/pr94530.c b/gcc/testsuite/gcc.target/aarch64/pr94530.c new file mode 100644 index 000000000000..1f98201c50a8 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr94530.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-Os -mcpu=falkor -mpc-relative-literal-loads -mcmodel=large" } */ + +extern void bar(const char *); + +void foo(void) { + for (;;) + bar(""); +}