On Nov 13, 2015 7:23 PM, "Sean Silva" <chisophu...@gmail.com> wrote: > > > > On Thu, Nov 12, 2015 at 9:14 PM, Richard Smith via cfe-commits < cfe-commits@lists.llvm.org> wrote: >> >> Author: rsmith >> Date: Thu Nov 12 23:14:45 2015 >> New Revision: 253012 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=253012&view=rev >> Log: >> [modules] When a declaration has non-trivial visibility, check whether it's > > > What is "non-trivial visibility"? Is this "visibility" something that exists in the present C++ language? (e.g. `using namespace std` etc.) or is this a different notion?
This is the modules notion of visibility (whether the declaration has been imported or not). Here, non-trivial visibility means "not known to be unconditionally visible", and corresponds to the Hidden flag on the Decl being true. > -- Sean Silva > >> >> actually hidden before we check its linkage. This avoids computing the linkage >> "too early" for an anonymous struct with a typedef name for linkage. >> >> Modified: >> cfe/trunk/include/clang/Sema/Lookup.h >> cfe/trunk/test/Modules/submodule-visibility.cpp >> >> Modified: cfe/trunk/include/clang/Sema/Lookup.h >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Lookup.h?rev=253012&r1=253011&r2=253012&view=diff >> ============================================================================== >> --- cfe/trunk/include/clang/Sema/Lookup.h (original) >> +++ cfe/trunk/include/clang/Sema/Lookup.h Thu Nov 12 23:14:45 2015 >> @@ -303,8 +303,7 @@ public: >> if (!D->isInIdentifierNamespace(IDNS)) >> return nullptr; >> >> - if (!D->isHidden() || isHiddenDeclarationVisible(D) || >> - isVisibleSlow(getSema(), D)) >> + if (isVisible(getSema(), D) || isHiddenDeclarationVisible(D)) >> return D; >> >> return getAcceptableDeclSlow(D); >> >> Modified: cfe/trunk/test/Modules/submodule-visibility.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/submodule-visibility.cpp?rev=253012&r1=253011&r2=253012&view=diff >> ============================================================================== >> --- cfe/trunk/test/Modules/submodule-visibility.cpp (original) >> +++ cfe/trunk/test/Modules/submodule-visibility.cpp Thu Nov 12 23:14:45 2015 >> @@ -28,3 +28,10 @@ int k = n + m; // OK, a and b are visibl >> #ifndef B >> #error B is not defined >> #endif >> + >> +// Ensure we don't compute the linkage of this struct before we find it has a >> +// typedef name for linkage purposes. >> +typedef struct { >> + int p; >> + void (*f)(int p); >> +} name_for_linkage; >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits