summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2017-10-14 14:46:04 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2017-10-14 14:46:04 +0000
commit93638b751a7fe1ea4d89a8e9fa1db4dd52496a04 (patch)
treed7d9f6423e9237511064c4d1fcec5b7919dabdcb
parent98f0c43f8573c272b801dc048c9f1da46f02e4c7 (diff)
downloadbcm5719-llvm-93638b751a7fe1ea4d89a8e9fa1db4dd52496a04.tar.gz
bcm5719-llvm-93638b751a7fe1ea4d89a8e9fa1db4dd52496a04.zip
Revert rL315787, "[Sema] Warn about unused variables if we can constant evaluate the initializer."
check-libcxx dislikes it. llvm-svn: 315806
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
-rw-r--r--clang/test/SemaCXX/warn-unused-variables.cpp33
2 files changed, 1 insertions, 35 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index e6f3aeae961..31abdfa3f6c 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1723,8 +1723,7 @@ static bool ShouldDiagnoseUnusedDecl(const NamedDecl *D) {
dyn_cast<CXXConstructExpr>(Init);
if (Construct && !Construct->isElidable()) {
CXXConstructorDecl *CD = Construct->getConstructor();
- if (!CD->isTrivial() && !RD->hasAttr<WarnUnusedAttr>() &&
- !VD->evaluateValue())
+ if (!CD->isTrivial() && !RD->hasAttr<WarnUnusedAttr>())
return false;
}
}
diff --git a/clang/test/SemaCXX/warn-unused-variables.cpp b/clang/test/SemaCXX/warn-unused-variables.cpp
index 0974cf5a61d..d7be785b35a 100644
--- a/clang/test/SemaCXX/warn-unused-variables.cpp
+++ b/clang/test/SemaCXX/warn-unused-variables.cpp
@@ -1,5 +1,4 @@
// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Wunused-label -Wno-c++1y-extensions -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Wunused-label -Wno-c++1y-extensions -verify -std=c++11 %s
template<typename T> void f() {
T t;
t = 17;
@@ -195,35 +194,3 @@ void test() {
}
}
-
-#if __cplusplus >= 201103L
-namespace with_constexpr {
-template <typename T>
-struct Literal {
- T i;
- Literal() = default;
- constexpr Literal(T i) : i(i) {}
-};
-
-struct NoLiteral {
- int i;
- NoLiteral() = default;
- constexpr NoLiteral(int i) : i(i) {}
- ~NoLiteral() {}
-};
-
-static Literal<int> gl1; // expected-warning {{unused variable 'gl1'}}
-static Literal<int> gl2(1); // expected-warning {{unused variable 'gl2'}}
-static const Literal<int> gl3(0); // expected-warning {{unused variable 'gl3'}}
-
-template <typename T>
-void test(int i) {
- Literal<int> l1; // expected-warning {{unused variable 'l1'}}
- Literal<int> l2(42); // expected-warning {{unused variable 'l2'}}
- Literal<int> l3(i); // no-warning
- Literal<T> l4(0); // no-warning
- NoLiteral nl1; // no-warning
- NoLiteral nl2(42); // no-warning
-}
-}
-#endif
OpenPOWER on IntegriCloud