aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Sema/SemaOverload.cpp3
-rw-r--r--test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp4
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index cc9f4df447..d3d027b8a5 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -1038,8 +1038,7 @@ bool Sema::IsOverload(FunctionDecl *New, FunctionDecl *Old,
// or non-static member function). Add it now, on the assumption that this
// is a redeclaration of OldMethod.
unsigned NewQuals = NewMethod->getTypeQualifiers();
- if ((OldMethod->isConstexpr() || NewMethod->isConstexpr()) &&
- !isa<CXXConstructorDecl>(NewMethod))
+ if (NewMethod->isConstexpr() && !isa<CXXConstructorDecl>(NewMethod))
NewQuals |= Qualifiers::Const;
if (OldMethod->getTypeQualifiers() != NewQuals)
return true;
diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp
index 559838b056..344f8ce8c4 100644
--- a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp
+++ b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp
@@ -5,6 +5,8 @@ using size_t = decltype(sizeof(int));
struct S {
constexpr int f();
constexpr int g() const;
+ constexpr int h();
+ int h();
static constexpr int Sf();
/*static*/ constexpr void *operator new(size_t) noexcept;
template<typename T> constexpr T tm();
@@ -25,6 +27,8 @@ void f(const S &s) {
constexpr int S::f() const { return 0; }
constexpr int S::g() { return 1; }
+constexpr int S::h() { return 0; }
+int S::h() { return 0; }
constexpr int S::Sf() { return 2; }
constexpr void *S::operator new(size_t) noexcept { return 0; }
template<typename T> constexpr T S::tm() { return T(); }