r348325 - [Sema] Remove some conditions of a failing assert

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 4 19:07:15 PST 2018


On Tue, 4 Dec 2018 at 16:46, Erik Pilkington via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: epilk
> Date: Tue Dec  4 16:43:11 2018
> New Revision: 348325
>
> URL: http://llvm.org/viewvc/llvm-project?rev=348325&view=rev
> Log:
> [Sema] Remove some conditions of a failing assert
>
> We should have been checking that this state is consistent, but its
> possible for it to be filled later, so it isn't really sound to check
> it here anyways.
>
> Fixes llvm.org/PR39742
>
> Modified:
>     cfe/trunk/lib/AST/DeclTemplate.cpp
>     cfe/trunk/test/SemaCXX/friend-template-redecl.cpp
>
> Modified: cfe/trunk/lib/AST/DeclTemplate.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclTemplate.cpp?rev=348325&r1=348324&r2=348325&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclTemplate.cpp (original)
> +++ cfe/trunk/lib/AST/DeclTemplate.cpp Tue Dec  4 16:43:11 2018
> @@ -329,8 +329,6 @@ void FunctionTemplateDecl::mergePrevDecl
>
>    // Ensure we don't leak any important state.
>    assert(ThisCommon->Specializations.size() == 0 &&
> -         !ThisCommon->InstantiatedFromMember.getPointer() &&
> -         !ThisCommon->InstantiatedFromMember.getInt() &&
>           "Can't merge incompatible declarations!");
>
>    Base::Common = PrevCommon;
>
> Modified: cfe/trunk/test/SemaCXX/friend-template-redecl.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/friend-template-redecl.cpp?rev=348325&r1=348324&r2=348325&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/SemaCXX/friend-template-redecl.cpp (original)
> +++ cfe/trunk/test/SemaCXX/friend-template-redecl.cpp Tue Dec  4 16:43:11
> 2018
> @@ -18,3 +18,14 @@ void f() {
>    foo(x);
>    bar(x);
>  }
> +
> +namespace PR39742 {
> +template<typename>
> +struct wrapper {
> +  template<typename>
> +  friend void friend_function_template() {}
> +};
> +
> +wrapper<bool> x;
> +wrapper<int> y;
>

This is ill-formed due to the redefinition of the template; we should at
least have a FIXME to properly reject it.


> +}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181204/2088f2d0/attachment.html>


More information about the cfe-commits mailing list