diff options
| author | Emilio Cobos Alvarez <emilio@crisal.io> | 2019-07-09 14:27:01 +0000 |
|---|---|---|
| committer | Emilio Cobos Alvarez <emilio@crisal.io> | 2019-07-09 14:27:01 +0000 |
| commit | 743754501b36aba2f74acf8612048bc2adee46c4 (patch) | |
| tree | b0dead9d273b2887ce2df8ddb68bcf975c0328f4 /clang/tools/libclang/CIndex.cpp | |
| parent | e0a3ee79c5ffdf076bc43ceb58ebaf73a41c7d8b (diff) | |
| download | bcm5719-llvm-743754501b36aba2f74acf8612048bc2adee46c4.tar.gz bcm5719-llvm-743754501b36aba2f74acf8612048bc2adee46c4.zip | |
[libclang] Fix hang in release / assertion in debug when evaluating value-dependent types.
Expression evaluator doesn't work in value-dependent types, so ensure that the
precondition it asserts holds.
This fixes https://bugs.llvm.org/show_bug.cgi?id=42532
Differential Revision: https://reviews.llvm.org/D64409
llvm-svn: 365490
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
| -rw-r--r-- | clang/tools/libclang/CIndex.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index b3d2974b43b..17c40615335 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -3782,6 +3782,8 @@ static const ExprEvalResult* evaluateExpr(Expr *expr, CXCursor C) { return nullptr; expr = expr->IgnoreParens(); + if (expr->isValueDependent()) + return nullptr; if (!expr->EvaluateAsRValue(ER, ctx)) return nullptr; |

