aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2013-08-18 14:58:58 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2013-08-18 14:58:58 +0000
commit4f219961f049e3125a4f5f02c287db0a1f4b8143 (patch)
treec4993a2810023ca32df4256e006ab189425a5d5b /gcc
parentce645eb091d3392d2f5aee2d415d472ced088d5b (diff)
downloadgcc-4f219961f049e3125a4f5f02c287db0a1f4b8143.zip
gcc-4f219961f049e3125a4f5f02c287db0a1f4b8143.tar.gz
gcc-4f219961f049e3125a4f5f02c287db0a1f4b8143.tar.bz2
cgraphunit.c (handle_alias_pairs): Reset the alias flag after the error message is issued for an alias to...
* cgraphunit.c (handle_alias_pairs): Reset the alias flag after the error message is issued for an alias to undefined symbol. From-SVN: r201826
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraphunit.c14
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/specs/linker_alias.ads9
4 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index faa465a..8579567 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-08-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * cgraphunit.c (handle_alias_pairs): Reset the alias flag after the
+ error message is issued for an alias to undefined symbol.
+
2013-08-18 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_create_indirect_edge): Discover
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 3cd2b41..1a4f99f 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1004,7 +1004,7 @@ analyze_functions (void)
/* Translate the ugly representation of aliases as alias pairs into nice
representation in callgraph. We don't handle all cases yet,
- unforutnately. */
+ unfortunately. */
static void
handle_alias_pairs (void)
@@ -1016,10 +1016,11 @@ handle_alias_pairs (void)
{
symtab_node target_node = symtab_node_for_asm (p->target);
- /* Weakrefs with target not defined in current unit are easy to handle; they
- behave just as external variables except we need to note the alias flag
- to later output the weakref pseudo op into asm file. */
- if (!target_node && lookup_attribute ("weakref", DECL_ATTRIBUTES (p->decl)) != NULL)
+ /* Weakrefs with target not defined in current unit are easy to handle:
+ they behave just as external variables except we need to note the
+ alias flag to later output the weakref pseudo op into asm file. */
+ if (!target_node
+ && lookup_attribute ("weakref", DECL_ATTRIBUTES (p->decl)) != NULL)
{
symtab_node node = symtab_get_node (p->decl);
if (node)
@@ -1034,6 +1035,9 @@ handle_alias_pairs (void)
else if (!target_node)
{
error ("%q+D aliased to undefined symbol %qE", p->decl, p->target);
+ symtab_node node = symtab_get_node (p->decl);
+ if (node)
+ node->symbol.alias = false;
alias_pairs->unordered_remove (i);
continue;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4d41fad..f734674 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2013-08-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/linker_alias.ads: New test.
+
2013-08-16 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/58164
diff --git a/gcc/testsuite/gnat.dg/specs/linker_alias.ads b/gcc/testsuite/gnat.dg/specs/linker_alias.ads
new file mode 100644
index 0000000..dd1d042
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/linker_alias.ads
@@ -0,0 +1,9 @@
+-- { dg-do compile }
+
+package Linker_Alias is
+
+ Var : Integer; -- { dg-error "aliased to undefined symbol" }
+ pragma Export (C, Var, "my_var");
+ pragma Linker_Alias (Var, "var2");
+
+end Linker_Alias;