aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-06-12 09:14:08 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-06-12 09:14:08 +0200
commitf3139680c36885f772828607e2e4a6a3df7ec4aa (patch)
treeaf72c9664f32d76c127615239f7908c094f8f2e4
parentbfde1e21735900800e42546d0307143d6ca5fe44 (diff)
downloadgcc-f3139680c36885f772828607e2e4a6a3df7ec4aa.zip
gcc-f3139680c36885f772828607e2e4a6a3df7ec4aa.tar.gz
gcc-f3139680c36885f772828607e2e4a6a3df7ec4aa.tar.bz2
re PR c/90760 (ICE on attributes section and alias in set_section, at symtab.c:1573)
PR c/90760 * symtab.c (symtab_node::set_section): Allow being called on aliases as long as they aren't analyzed yet. * gcc.dg/pr90760.c: New test. From-SVN: r272178
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/symtab.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr90760.c8
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ba25766..ea28e6c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/90760
+ * symtab.c (symtab_node::set_section): Allow being called on aliases
+ as long as they aren't analyzed yet.
+
2019-06-11 Faraz Shahbazker <fshahbazker@wavecomp.com>
* config/mips/mips.c (mips_final_postscan_insn): Modify call
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 905ca05..b1589ea 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1583,7 +1583,7 @@ symtab_node::set_section (symtab_node *n, void *s)
void
symtab_node::set_section (const char *section)
{
- gcc_assert (!this->alias);
+ gcc_assert (!this->alias || !this->analyzed);
call_for_symbol_and_aliases
(symtab_node::set_section, const_cast<char *>(section), true);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 302ac15..2753571 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/90760
+ * gcc.dg/pr90760.c: New test.
+
2019-06-11 Faraz Shahbazker <fshahbazker@wavecomp.com>
* gcc.target/mips/data-sym-pool.c: Update expected output.
diff --git a/gcc/testsuite/gcc.dg/pr90760.c b/gcc/testsuite/gcc.dg/pr90760.c
new file mode 100644
index 0000000..525a21a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr90760.c
@@ -0,0 +1,8 @@
+/* PR c/90760 */
+/* { dg-do compile } */
+/* { dg-require-named-sections "" } */
+
+void bar (void) {}
+void foo (void) __attribute__ ((alias ("bar"))); /* { dg-error "section of alias 'foo' must match section of its target" } */
+void foo (void) __attribute__ ((section ("baz")));
+void qux (void) __attribute__ ((alias ("bar"), section ("baz"))); /* { dg-error "section of alias 'qux' must match section of its target" } */