PR target/94530
authorAndrea Corallo <andrea.corallo@arm.com>
Wed, 8 Apr 2020 12:38:28 +0000 (13:38 +0100)
committerAndrea Corallo <andrea.corallo@arm.com>
Thu, 9 Apr 2020 08:49:42 +0000 (10:49 +0200)
gcc/ChangeLog

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

PR target/94530
* config/aarch64/falkor-tag-collision-avoidance.c
(valid_src_p): Fix missing rtx type check.

gcc/testsuite/ChangeLog

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

* 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 d45d272704c265502284284c4e82eb137b9c5d3e..80492ef4163218e3e857e998a4aeb85af62d473c 100644 (file)
@@ -1,3 +1,9 @@
+2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>
+
+       PR target/94530
+       * config/aarch64/falkor-tag-collision-avoidance.c
+       (valid_src_p): Fix missing rtx type check.
+
 2020-04-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
            Richard Biener  <rguenther@suse.de>
 
index 719df484ee61b2d570b73b9c9c54144e574aba61..f850153fae02ed8ff906486071c815d4eab5d4b2 100644 (file)
@@ -538,6 +538,9 @@ 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 (!REG_P (addr.base))
+    return false;
+
   unsigned regno = REGNO (addr.base);
   if (global_regs[regno] || fixed_regs[regno])
     return false;
index 960eae47308e018d70e4772a95cc46aaf39875e5..fde4e0fa4a78a7271ae8dec3be7e76445ddc81ab 100644 (file)
@@ -1,3 +1,7 @@
+2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>
+
+       * gcc.target/aarch64/pr94530.c: New test.
+
 2020-04-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
 
        PR tree-optimization/93674
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("");
+}