gcc: arc-2017.03-rc2: Fix "unrecognized supposed constant" error
This fixes the following problem:
------------------------------------>8--------------------------------
arc-linux-gcc -c -Os -fPIC iso9660.i
iso9660.c: In function 'strip_trail':
iso9660.c:155:1: error: unrecognized supposed constant
}
^
(unspec:SI [
(symbol_ref:SI ("*.LANCHOR1") [flags 0x182])
] ARC_UNSPEC_GOTOFFPC)
iso9660.c:155:1: internal compiler error: in arc_legitimate_constant_p, at config/arc/arc.c:6028
------------------------------------>8--------------------------------
Found by Buildroot autobuilder [1].
The fix [2] is in arc-2017.03 development branch of ARC GCC and once it
becomes a part the next release of ARC tools this should be removed
from Buildroot.
[1] http://autobuild.buildroot.net/results/c90/c909e8c397ab972b6aa4d370572cad4fae284d00/build-end.log
[2] 139fed9d29
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
1dc3864dab
commit
2b360bd547
|
@ -0,0 +1,58 @@
|
|||
From 139fed9d29ab935b3bc5159c0bdf7b8b8a39442d Mon Sep 17 00:00:00 2001
|
||||
From: Claudiu Zissulescu <claziss@gmail.com>
|
||||
Date: Mon, 15 May 2017 05:05:27 -0400
|
||||
Subject: [PATCH] [FIX] PIC: return false for any PIC related unspecs
|
||||
|
||||
---
|
||||
gcc/config/arc/arc.c | 9 ++++-----
|
||||
gcc/testsuite/gcc.target/arc/pr9001191897.c | 10 ++++++++++
|
||||
2 files changed, 14 insertions(+), 5 deletions(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/arc/pr9001191897.c
|
||||
|
||||
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
|
||||
index 3d53a667d37f..b00126f4d2c4 100644
|
||||
--- a/gcc/config/arc/arc.c
|
||||
+++ b/gcc/config/arc/arc.c
|
||||
@@ -6056,11 +6056,8 @@ arc_legitimate_constant_p (machine_mode mode, rtx x)
|
||||
return true;
|
||||
|
||||
case NEG:
|
||||
- /* Assembler does not understand -(@label@gotoff). Also, we do
|
||||
- not print such pic address constant. */
|
||||
- if (GET_CODE (XEXP (x, 0)) == UNSPEC)
|
||||
- return false;
|
||||
return arc_legitimate_constant_p (mode, XEXP (x, 0));
|
||||
+
|
||||
case PLUS:
|
||||
case MINUS:
|
||||
{
|
||||
@@ -6090,7 +6087,9 @@ arc_legitimate_constant_p (machine_mode mode, rtx x)
|
||||
case UNSPEC_TLS_IE:
|
||||
return true;
|
||||
default:
|
||||
- break;
|
||||
+ /* Any other unspec ending here are pic related, hence the above
|
||||
+ constant pic address checking returned false. */
|
||||
+ return false;
|
||||
}
|
||||
/* Fall through. */
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/arc/pr9001191897.c b/gcc/testsuite/gcc.target/arc/pr9001191897.c
|
||||
new file mode 100644
|
||||
index 000000000000..2b9e1689803f
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/arc/pr9001191897.c
|
||||
@@ -0,0 +1,10 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-skip-if "" { ! { clmcpu } } } */
|
||||
+/* { dg-options "-mcpu=arch2 -Os -fpic -mno-sdata -mno-indexed-loads -w" } */
|
||||
+a;
|
||||
+c() {
|
||||
+ static char b[25];
|
||||
+ for (; a >= 0; a--)
|
||||
+ if (b[a])
|
||||
+ b[a] = '\0';
|
||||
+}
|
||||
--
|
||||
2.7.4
|
||||
|
Loading…
Reference in a new issue