aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-04-11 11:45:44 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-04-11 11:45:44 +0000
commit8330537b5b58bd0532a0a49f9cbd59bf526a7847 (patch)
treed6fb042706a18c8c8bb641467840de62f7501d69
parent3c91f126f470758738a0cddbec8f978f42486754 (diff)
downloadgcc-8330537b5b58bd0532a0a49f9cbd59bf526a7847.zip
gcc-8330537b5b58bd0532a0a49f9cbd59bf526a7847.tar.gz
gcc-8330537b5b58bd0532a0a49f9cbd59bf526a7847.tar.bz2
re PR middle-end/60797 (gcc hangs with error: only weak aliases are supported in this configuration)
2014-04-11 Richard Biener <rguenther@suse.de> PR middle-end/60797 * varasm.c (assemble_alias): Avoid endless error reporting recursion by setting TREE_ASM_WRITTEN. * gcc.dg/pr60797.c: New testcase. From-SVN: r209299
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr60797.c8
-rw-r--r--gcc/varasm.c2
4 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b4173bc..3b2b76a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-11 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60797
+ * varasm.c (assemble_alias): Avoid endless error reporting
+ recursion by setting TREE_ASM_WRITTEN.
+
2014-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.md: Add a splitter for NOT rtx.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f880e75..ea81230 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-04-11 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60797
+ * gcc.dg/pr60797.c: New testcase.
+
2014-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.target/s390/htm-nofloat-1.c: Rename to ...
diff --git a/gcc/testsuite/gcc.dg/pr60797.c b/gcc/testsuite/gcc.dg/pr60797.c
new file mode 100644
index 0000000..45090ba
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr60797.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { alias } } */
+
+extern int foo __attribute__((alias("bar"))); /* { dg-error "supported" } */
+int main()
+{
+ return 0;
+}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 295c27d..8e8c5f6 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -5665,6 +5665,7 @@ assemble_alias (tree decl, tree target)
# if !defined(ASM_OUTPUT_WEAK_ALIAS) && !defined (ASM_WEAKEN_DECL)
error_at (DECL_SOURCE_LOCATION (decl),
"alias definitions not supported in this configuration");
+ TREE_ASM_WRITTEN (decl) = 1;
return;
# else
if (!DECL_WEAK (decl))
@@ -5675,6 +5676,7 @@ assemble_alias (tree decl, tree target)
else
error_at (DECL_SOURCE_LOCATION (decl),
"only weak aliases are supported in this configuration");
+ TREE_ASM_WRITTEN (decl) = 1;
return;
}
# endif