r334160 - Change return value of trivial visibility check.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 6 22:32:27 PDT 2018
On Wed, Jun 6, 2018 at 11:24 PM Richard Trieu via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
>
> Author: rtrieu
> Date: Wed Jun 6 20:20:30 2018
> New Revision: 334160
>
> URL: http://llvm.org/viewvc/llvm-project?rev=334160&view=rev
> Log:
> Change return value of trivial visibility check.
>
> Previous, if no Decl's were checked, visibility was set to false. Switch it
> so that in cases of no Decl's, return true. These are the Decl's after being
> filtered. Also remove an unreachable return statement since it is directly
> after another return statement.
>
> Added:
> cfe/trunk/test/Modules/local-visibility.cpp
> Modified:
> cfe/trunk/lib/Sema/SemaLookup.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaLookup.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaLookup.cpp?rev=334160&r1=334159&r2=334160&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaLookup.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaLookup.cpp Wed Jun 6 20:20:30 2018
> @@ -1452,6 +1452,8 @@ template<typename Filter>
> static bool hasVisibleDeclarationImpl(Sema &S, const NamedDecl *D,
> llvm::SmallVectorImpl<Module *> *Modules,
> Filter F) {
> + bool HasFilteredRedecls = false;
> +
> for (auto *Redecl : D->redecls()) {
> auto *R = cast<NamedDecl>(Redecl);
> if (!F(R))
> @@ -1460,6 +1462,8 @@ static bool hasVisibleDeclarationImpl(Se
> if (S.isVisible(R))
> return true;
>
> + HasFilteredRedecls = true;
> +
> if (Modules) {
> Modules->push_back(R->getOwningModule());
> const auto &Merged = S.Context.getModulesWithMergedDefinition(R);
> @@ -1467,7 +1471,11 @@ static bool hasVisibleDeclarationImpl(Se
> }
> }
>
> - return false;
> + // Only return false if there is at least one redecl that is not filtered out.
> + if (HasFilteredRedecls)
> + return false;
> +
> + return true;
How about:
return !HasFilteredRedecls;
instead?
> }
>
> bool Sema::hasVisibleExplicitSpecialization(
> @@ -1497,8 +1505,6 @@ bool Sema::hasVisibleMemberSpecializatio
> // class definition?
> return D->getLexicalDeclContext()->isFileContext();
> });
> -
> - return false;
> }
>
> /// Determine whether a declaration is visible to name lookup.
>
> Added: cfe/trunk/test/Modules/local-visibility.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/local-visibility.cpp?rev=334160&view=auto
> ==============================================================================
> --- cfe/trunk/test/Modules/local-visibility.cpp (added)
> +++ cfe/trunk/test/Modules/local-visibility.cpp Wed Jun 6 20:20:30 2018
> @@ -0,0 +1,15 @@
> +// RUN: %clang_cc1 -fsyntax-only -fmodules %s -verify
> +// RUN: %clang_cc1 -fsyntax-only %s -verify
> +
> +// expected-no-diagnostics
> +template <typename Var>
> +struct S {
> + template <unsigned N>
> + struct Inner { };
> +
> + template <>
> + struct Inner<0> { };
> +};
> +
> +S<int>::Inner<1> I1;
> +S<int>::Inner<0> I0;
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list