From d35cb054c9430b6a593c064d96a6a7cfb69bb0e9 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 28 Aug 2015 22:33:53 +0000 Subject: PR24612: Don't bail out of checking a constexpr function before checking whether it can ever produce a constant expression in the case where it has a void return type and no return statements. llvm-svn: 246347 --- clang/lib/Sema/SemaDeclCXX.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'clang/lib/Sema/SemaDeclCXX.cpp') diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 8afa3324661..9c08495286c 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1230,9 +1230,9 @@ bool Sema::CheckConstexprFunctionBody(const FunctionDecl *Dcl, Stmt *Body) { Diag(Dcl->getLocation(), OK ? diag::warn_cxx11_compat_constexpr_body_no_return : diag::err_constexpr_body_no_return); - return OK; - } - if (ReturnStmts.size() > 1) { + if (!OK) + return false; + } else if (ReturnStmts.size() > 1) { Diag(ReturnStmts.back(), getLangOpts().CPlusPlus14 ? diag::warn_cxx11_compat_constexpr_body_multiple_return -- cgit v1.2.3