diff options
Diffstat (limited to 'clang/lib/AST/Interp/ByteCodeStmtGen.cpp')
| -rw-r--r-- | clang/lib/AST/Interp/ByteCodeStmtGen.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/AST/Interp/ByteCodeStmtGen.cpp b/clang/lib/AST/Interp/ByteCodeStmtGen.cpp index 5b47489e65e0..90e84149b055 100644 --- a/clang/lib/AST/Interp/ByteCodeStmtGen.cpp +++ b/clang/lib/AST/Interp/ByteCodeStmtGen.cpp @@ -188,6 +188,12 @@ bool ByteCodeStmtGen<Emitter>::visitReturnStmt(const ReturnStmt *RS) { template <class Emitter> bool ByteCodeStmtGen<Emitter>::visitIfStmt(const IfStmt *IS) { BlockScope<Emitter> IfScope(this); + + if (IS->isNonNegatedConsteval()) + return visitStmt(IS->getThen()); + if (IS->isNegatedConsteval()) + return IS->getElse() ? visitStmt(IS->getElse()) : true; + if (auto *CondInit = IS->getInit()) if (!visitStmt(IS->getInit())) return false; |
