diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Analysis/UninitializedValues.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/uninit-variables.cpp | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Analysis/UninitializedValues.cpp b/clang/lib/Analysis/UninitializedValues.cpp index 4b8a59c398c..f5c786ac345 100644 --- a/clang/lib/Analysis/UninitializedValues.cpp +++ b/clang/lib/Analysis/UninitializedValues.cpp @@ -34,7 +34,7 @@ using namespace clang; static bool isTrackedVar(const VarDecl *vd, const DeclContext *dc) { if (vd->isLocalVarDecl() && !vd->hasGlobalStorage() && - !vd->isExceptionVariable() && + !vd->isExceptionVariable() && !vd->isInitCapture() && vd->getDeclContext() == dc) { QualType ty = vd->getType(); return ty->isScalarType() || ty->isVectorType(); diff --git a/clang/test/SemaCXX/uninit-variables.cpp b/clang/test/SemaCXX/uninit-variables.cpp index 687bfd2638d..4dcd34858ab 100644 --- a/clang/test/SemaCXX/uninit-variables.cpp +++ b/clang/test/SemaCXX/uninit-variables.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fcxx-exceptions %s -verify +// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fcxx-exceptions %s -verify -std=c++1y // Stub out types for 'typeid' to work. namespace std { class type_info {}; } @@ -147,3 +147,6 @@ int test_const_ref() { consume_const_ref(n); return n; // expected-warning {{uninitialized when used here}} } + +// Don't crash here. +auto PR19996 = [a=0]{int t; return a;}; |