diff options
author | Kai Tietz <kai.tietz@onevision.com> | 2010-11-25 12:30:07 +0000 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2010-11-25 13:30:07 +0100 |
commit | 9d602c5900c50a7cda00695c00e1945badc184cf (patch) | |
tree | 53c658f06750cdef237c8cdb0035bc208fccf85b /gcc/cgraphunit.c | |
parent | c8230704c44609131a832307f2eee04df3206eb8 (diff) | |
download | gcc-9d602c5900c50a7cda00695c00e1945badc184cf.zip gcc-9d602c5900c50a7cda00695c00e1945badc184cf.tar.gz gcc-9d602c5900c50a7cda00695c00e1945badc184cf.tar.bz2 |
cgraphunit.c (process_function_and_variable_attributes): Mark dllexport-ed function/variables as needed.
2010-11-25 Kai Tietz <kai.tietz@onevision.com>
* cgraphunit.c (process_function_and_variable_attributes):
Mark dllexport-ed function/variables as needed.
* ipa.c (cgraph_externally_visible_p): Make dllexport-ed
as externally visible.
2010-11-25 Kai Tietz <kai.tietz@onevision.com>
* gcc.dg/dll-8.c: New.
From-SVN: r167144
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r-- | gcc/cgraphunit.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index dd7c0fb..c7c5665 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -816,7 +816,14 @@ process_function_and_variable_attributes (struct cgraph_node *first, tree decl = node->decl; if (DECL_PRESERVE_P (decl)) cgraph_mark_needed_node (node); - if (lookup_attribute ("externally_visible", DECL_ATTRIBUTES (decl))) + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES + && lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)) + && TREE_PUBLIC (node->decl)) + { + if (node->local.finalized) + cgraph_mark_needed_node (node); + } + else if (lookup_attribute ("externally_visible", DECL_ATTRIBUTES (decl))) { if (! TREE_PUBLIC (node->decl)) warning_at (DECL_SOURCE_LOCATION (node->decl), OPT_Wattributes, @@ -835,7 +842,14 @@ process_function_and_variable_attributes (struct cgraph_node *first, if (vnode->finalized) varpool_mark_needed_node (vnode); } - if (lookup_attribute ("externally_visible", DECL_ATTRIBUTES (decl))) + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES + && lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)) + && TREE_PUBLIC (node->decl)) + { + if (vnode->finalized) + varpool_mark_needed_node (vnode); + } + else if (lookup_attribute ("externally_visible", DECL_ATTRIBUTES (decl))) { if (! TREE_PUBLIC (vnode->decl)) warning_at (DECL_SOURCE_LOCATION (vnode->decl), OPT_Wattributes, |