]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: backport fix for PR target/94530
authorAndrea Corallo <andrea.corallo@arm.com>
Thu, 16 Apr 2020 07:55:51 +0000 (09:55 +0200)
committerAndrea Corallo <andrea.corallo@arm.com>
Mon, 20 Apr 2020 12:28:20 +0000 (14:28 +0200)
gcc/ChangeLog

2020-04-16  Andrea Corallo  <andrea.corallo@arm.com>

Backport from mainline.
2020-04-15  Andrea Corallo  <andrea.corallo@arm.com

PR target/94530
* config/aarch64/falkor-tag-collision-avoidance.c
(valid_src_p): Check for aarch64_address_info type before
accessing base field.

gcc/testsuite/ChangeLog

2020-04-16  Andrea Corallo  <andrea.corallo@arm.com>

Backport from mainline.
2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>

PR target/94530
* gcc.target/aarch64/pr94530.c: New test.

gcc/ChangeLog
gcc/config/aarch64/falkor-tag-collision-avoidance.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/pr94530.c [new file with mode: 0644]

index 4b29a54e90a54eb3228e2fb9558eac9d93172d87..4222eed2d9be9fc44594f2aa604e808e65ec5920 100644 (file)
@@ -1,3 +1,13 @@
+2020-04-20  Andrea Corallo  <andrea.corallo@arm.com>
+
+       Backport from mainline.
+       2020-04-15  Andrea Corallo  <andrea.corallo@arm.com>
+
+       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  <tamar.christina@arm.com>
 
        Backport from mainline.
index 779dee81f7f4ed3d3ae1fc11f232fc558027b9fe..698d1595d0a6a3ae028d9280615673a03613123a 100644 (file)
@@ -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;
index 5a52e97da05f6d5d6b708b01990f38a4e14be857..d0117119d4b86e0f3f8804f4bb94b61ed736067c 100644 (file)
@@ -1,3 +1,11 @@
+2020-04-20  Andrea Corallo  <andrea.corallo@arm.com>
+
+       Backport from mainline.
+       2020-04-09  Andrea Corallo  <andrea.corallo@arm.com
+
+       PR target/94530
+       * gcc.target/aarch64/pr94530.c: New test.
+
 2020-04-20  Tamar Christina  <tamar.christina@arm.com>
 
        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 (file)
index 0000000..1f98201
--- /dev/null
@@ -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("");
+}