Optimize loops better.

This commit is contained in:
Stephen Chung
2021-08-04 17:40:26 +08:00
parent 4807fdf1cf
commit 9b56c1ba78
2 changed files with 25 additions and 7 deletions

View File

@@ -559,6 +559,9 @@ fn optimize_stmt(stmt: &mut Stmt, state: &mut OptimizerState, preserve_result: b
// while expr { block }
Stmt::While(condition, body, _) => {
optimize_expr(condition, state, false);
if let Expr::BoolConstant(true, pos) = condition {
*condition = Expr::Unit(*pos);
}
let block = mem::take(body.statements_mut()).into_vec();
*body.statements_mut() = optimize_stmt_block(block, state, false, true, false).into();