Skip to content

Commit ba451c8

Browse files
committed
[clang][Interp][NFC] Only set result invalid if empty
This is currently NFC but required for later changes. A Ret op might fail and set the result to invalid, causing another setInvalid() call, which asserts that the result is still empty.
1 parent dce77a3 commit ba451c8

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

clang/lib/AST/Interp/EvalEmitter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ EvalEmitter::~EvalEmitter() {
3636
EvaluationResult EvalEmitter::interpretExpr(const Expr *E) {
3737
EvalResult.setSource(E);
3838

39-
if (!this->visitExpr(E))
39+
if (!this->visitExpr(E) && EvalResult.empty())
4040
EvalResult.setInvalid();
4141

4242
return std::move(this->EvalResult);
@@ -45,7 +45,7 @@ EvaluationResult EvalEmitter::interpretExpr(const Expr *E) {
4545
EvaluationResult EvalEmitter::interpretDecl(const VarDecl *VD) {
4646
EvalResult.setSource(VD);
4747

48-
if (!this->visitDecl(VD))
48+
if (!this->visitDecl(VD) && EvalResult.empty())
4949
EvalResult.setInvalid();
5050

5151
return std::move(this->EvalResult);

0 commit comments

Comments
 (0)