Author: rsmith Date: Tue Oct 18 19:14:23 2016 New Revision: 284556 URL: http://llvm.org/viewvc/llvm-project?rev=284556&view=rev Log: Resolve exception specifications when selecting an overloaded operator.
Modified: cfe/trunk/lib/Sema/SemaOverload.cpp cfe/trunk/test/SemaCXX/constant-expression-cxx1z.cpp Modified: cfe/trunk/lib/Sema/SemaOverload.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=284556&r1=284555&r2=284556&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaOverload.cpp (original) +++ cfe/trunk/lib/Sema/SemaOverload.cpp Tue Oct 18 19:14:23 2016 @@ -60,6 +60,8 @@ CreateFunctionRefExpr(Sema &S, FunctionD // being used. if (FoundDecl != Fn && S.DiagnoseUseOfDecl(Fn, Loc)) return ExprError(); + if (auto *FPT = Fn->getType()->getAs<FunctionProtoType>()) + S.ResolveExceptionSpec(Loc, FPT); DeclRefExpr *DRE = new (S.Context) DeclRefExpr(Fn, false, Fn->getType(), VK_LValue, Loc, LocInfo); if (HadMultipleCandidates) Modified: cfe/trunk/test/SemaCXX/constant-expression-cxx1z.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/constant-expression-cxx1z.cpp?rev=284556&r1=284555&r2=284556&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/constant-expression-cxx1z.cpp (original) +++ cfe/trunk/test/SemaCXX/constant-expression-cxx1z.cpp Tue Oct 18 19:14:23 2016 @@ -33,7 +33,9 @@ namespace NoexceptFunctionTypes { template<typename T> struct A { constexpr bool f() noexcept(true) { return true; } constexpr bool g() { return f(); } + constexpr bool operator()() const noexcept(true) { return true; } }; static_assert(A<int>().f()); static_assert(A<int>().g()); + static_assert(A<int>()()); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits