summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-01-20 01:19:46 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-01-20 01:19:46 +0000
commit187ffb4a8e13dafb90b7f371325065d0d648a4a1 (patch)
treebdcd2f0787db1695de7f3e13bf333693dd164bdc /clang/lib
parent24a2ebe67711ef063a737b973c43610dc29b0269 (diff)
downloadbcm5719-llvm-187ffb4a8e13dafb90b7f371325065d0d648a4a1.tar.gz
bcm5719-llvm-187ffb4a8e13dafb90b7f371325065d0d648a4a1.zip
PR31701: Fix crash on invalid caused by parsing a dependent initializer when we
don't know we're in a dependent context. llvm-svn: 292561
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/ASTContext.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index d9b0d390808..5624758670b 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -9021,7 +9021,8 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) {
// Variables that have initialization with side-effects are required.
if (VD->getInit() && VD->getInit()->HasSideEffects(*this) &&
- !VD->evaluateValue())
+ // We can get a value-dependent initializer during error recovery.
+ (VD->getInit()->isValueDependent() || !VD->evaluateValue()))
return true;
// Likewise, variables with tuple-like bindings are required if their
OpenPOWER on IntegriCloud