From: Benjamin Kramer Date: Thu, 19 Oct 2017 19:07:13 +0000 (+0000) Subject: [Sema] Fix assertion failure when checking for unused variables in a dependent context. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73f05d57767628a433992d6e4a44846f106fd21d;p=clang [Sema] Fix assertion failure when checking for unused variables in a dependent context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@316177 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 9e5fa0e563..d75a469970 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -1724,7 +1724,7 @@ static bool ShouldDiagnoseUnusedDecl(const NamedDecl *D) { if (Construct && !Construct->isElidable()) { CXXConstructorDecl *CD = Construct->getConstructor(); if (!CD->isTrivial() && !RD->hasAttr() && - !VD->evaluateValue()) + (VD->getInit()->isValueDependent() || !VD->evaluateValue())) return false; } } diff --git a/test/SemaCXX/warn-unused-variables.cpp b/test/SemaCXX/warn-unused-variables.cpp index 0974cf5a61..a7ac9afc36 100644 --- a/test/SemaCXX/warn-unused-variables.cpp +++ b/test/SemaCXX/warn-unused-variables.cpp @@ -226,4 +226,14 @@ void test(int i) { NoLiteral nl2(42); // no-warning } } + +namespace crash { +struct a { + a(const char *); +}; +template +void c() { + a d(b::e ? "" : ""); +} +} #endif