From 4f219961f049e3125a4f5f02c287db0a1f4b8143 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sun, 18 Aug 2013 14:58:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/cgraphunit.c | 14 +++++++++----- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/specs/linker_alias.ads | 9 +++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gnat.dg/specs/linker_alias.ads diff --git a/gcc/ChangeLog b/gcc/ChangeLog index faa465ab27f..8579567edc3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-08-18 Eric Botcazou + + * 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 * cgraph.c (cgraph_create_indirect_edge): Discover diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 3cd2b417ca7..1a4f99febf9 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 4d41fad6bd1..f7346742253 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-08-18 Eric Botcazou + + * gnat.dg/specs/linker_alias.ads: New test. + 2013-08-16 Jakub Jelinek 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 00000000000..dd1d0422f15 --- /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; -- 2.30.2