Author: Richard Smith Date: 2019-12-11T14:26:28-08:00 New Revision: db4c7adfa365282e8cb9a067c509fa711c4b96fe
URL: https://github.com/llvm/llvm-project/commit/db4c7adfa365282e8cb9a067c509fa711c4b96fe DIFF: https://github.com/llvm/llvm-project/commit/db4c7adfa365282e8cb9a067c509fa711c4b96fe.diff LOG: Suppress false-positive -Wuninitialized warnings in the constructor of a templated but non-template class. Added: Modified: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/uninitialized.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 5373bb422ad6..ba4d450984a3 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 331a948eb6f1..63d5e7b92eac 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; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits