forked from OSchip/llvm-project
4d8c00c059
Summary: If you create an expression with parse errors, the `parser::Expr.typedExpr` will be empty, which causes a compiler crash. The crash is caused by the check in check-do-forall.cpp that scans all expresssions to see if `DO` variables are being modified. It turned out that the problem was that I was fetching subexpressions of type `parser::Expr`, which are not guaranteed to have a non-null `typedExpr`. I fixed this by only grabbing the top-level expression from which to gather arguments as part of the DO loop analysis. This, in turn, exposed a problem where I wasn't collecting all of the actual arguments in an expression. This was caused by the fact that I wasn't recursing through the rest of the expression after finding an argument. I fixed this by recursing through the argument in the member function in `CollectActualArgumentsHelper`. Reviewers: klausler, tskeith, DavidTruby Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81101 |
||
---|---|---|
.. | ||
Common | ||
Decimal | ||
Evaluate | ||
Lower | ||
Optimizer | ||
Parser | ||
Semantics | ||
CMakeLists.txt |