Author: rafael Date: Mon Jul 16 23:22:25 2012 New Revision: 160339 URL: http://llvm.org/viewvc/llvm-project?rev=160339&view=rev Log: Record visibility pragmas when we see a tag declaration. We might use it to build a type before seeing the definition.
Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/CodeGenCXX/visibility.cpp Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=160339&r1=160338&r2=160339&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Jul 16 23:22:25 2012 @@ -8880,6 +8880,10 @@ if (Attr) ProcessDeclAttributeList(S, New, Attr); + // If there's a #pragma GCC visibility in scope, set the visibility of this + // record. + AddPushedVisibilityAttribute(New); + // If we're declaring or defining a tag in function prototype scope // in C, note that this type can only be used within the function. if (Name && S->isFunctionPrototypeScope() && !getLangOpts().CPlusPlus) Modified: cfe/trunk/test/CodeGenCXX/visibility.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/visibility.cpp?rev=160339&r1=160338&r2=160339&view=diff ============================================================================== --- cfe/trunk/test/CodeGenCXX/visibility.cpp (original) +++ cfe/trunk/test/CodeGenCXX/visibility.cpp Mon Jul 16 23:22:25 2012 @@ -1061,3 +1061,19 @@ // CHECK: declare hidden void @_ZN6test573fooIiE3zedEv // CHECK-HIDDEN: declare hidden void @_ZN6test573fooIiE3zedEv } + +namespace test58 { +#pragma GCC visibility push(hidden) + struct foo; + template<typename T> + struct __attribute__((visibility("default"))) bar { + static void zed() { + } + }; + void bah() { + bar<foo>::zed(); + } +#pragma GCC visibility pop + // CHECK: define linkonce_odr hidden void @_ZN6test583barINS_3fooEE3zedEv + // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test583barINS_3fooEE3zedEv +} _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits