summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2019-12-11 14:25:43 -0800
committerRichard Smith <richard@metafoo.co.uk>2019-12-11 14:26:28 -0800
commitdb4c7adfa365282e8cb9a067c509fa711c4b96fe (patch)
tree23ff4a3f81cb6e8c2e3774af5bb44442cc70fcec
parent70d14255dfcd9c4849deff9e9f2912c8ec030d11 (diff)
downloadbcm5719-llvm-db4c7adfa365282e8cb9a067c509fa711c4b96fe.tar.gz
bcm5719-llvm-db4c7adfa365282e8cb9a067c509fa711c4b96fe.zip
Suppress false-positive -Wuninitialized warnings in the constructor of a
templated but non-template class.
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp2
-rw-r--r--clang/test/SemaCXX/uninitialized.cpp9
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 5373bb422ad..ba4d450984a 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -3807,7 +3807,7 @@ namespace {
const CXXRecordDecl *RD = Constructor->getParent();
- if (RD->getDescribedClassTemplate())
+ if (RD->isDependentContext())
return;
// Holds fields that are uninitialized.
diff --git a/clang/test/SemaCXX/uninitialized.cpp b/clang/test/SemaCXX/uninitialized.cpp
index 331a948eb6f..63d5e7b92ea 100644
--- a/clang/test/SemaCXX/uninitialized.cpp
+++ b/clang/test/SemaCXX/uninitialized.cpp
@@ -1449,3 +1449,12 @@ void if_switch_init_stmt(int k) {
switch (int n; (n == k || k > 5)) {} // expected-warning {{uninitialized}} expected-note {{initialize}} expected-warning {{boolean}}
}
+
+template<typename T> struct Outer {
+ struct Inner {
+ int a = 1;
+ int b;
+ Inner() : b(a) {}
+ };
+};
+Outer<int>::Inner outerinner;
OpenPOWER on IntegriCloud