* decl2.c (get_guard): Copy visibility from the guarded variable.
From-SVN: r128226
This commit is contained in:
parent
bd1a56a0c3
commit
3fd406847c
@ -1,3 +1,7 @@
|
||||
2007-09-06 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* decl2.c (get_guard): Copy visibility from the guarded variable.
|
||||
|
||||
2007-09-06 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* semantics.c (expand_body): Do not mark arguments of clones used.
|
||||
|
@ -2215,6 +2215,8 @@ get_guard (tree decl)
|
||||
DECL_ONE_ONLY (guard) = DECL_ONE_ONLY (decl);
|
||||
if (TREE_PUBLIC (decl))
|
||||
DECL_WEAK (guard) = DECL_WEAK (decl);
|
||||
DECL_VISIBILITY (guard) = DECL_VISIBILITY (decl);
|
||||
DECL_VISIBILITY_SPECIFIED (guard) = DECL_VISIBILITY_SPECIFIED (decl);
|
||||
|
||||
DECL_ARTIFICIAL (guard) = 1;
|
||||
DECL_IGNORED_P (guard) = 1;
|
||||
|
29
gcc/testsuite/g++.dg/ext/visibility/guard1.C
Normal file
29
gcc/testsuite/g++.dg/ext/visibility/guard1.C
Normal file
@ -0,0 +1,29 @@
|
||||
// { dg-options "-fvisibility=hidden" }
|
||||
// { dg-require-visibility "" }
|
||||
// { dg-final { scan-not-hidden "_ZGVZN5otherclEvE4s_cd" } }
|
||||
|
||||
extern "C" int printf (const char *, ...);
|
||||
|
||||
#define DLLEXPORT __attribute__ ((visibility("default")))
|
||||
|
||||
struct class_data
|
||||
{
|
||||
int apple;
|
||||
class_data() { printf("non trivial ctor\n"); }
|
||||
};
|
||||
|
||||
struct DLLEXPORT other
|
||||
{
|
||||
class_data* operator ()()
|
||||
{
|
||||
static class_data s_cd;
|
||||
return &s_cd;
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
other aFoo;
|
||||
aFoo();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user