From 4216dbac10887476feef287854e9e4037f2d1a59 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 21 Mar 2019 21:24:24 -0400 Subject: opt: Optimize redundant comma expressions --- opt.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'opt.c') diff --git a/opt.c b/opt.c index fd2dc3c..1ece9be 100644 --- a/opt.c +++ b/opt.c @@ -595,9 +595,11 @@ static struct expr *optimize_comma_expr(const struct opt_state *state, struct ex if (expr_never_returns(lhs)) { debug_opt(state, "-O1: reachability: %e <==> %e\n", expr, lhs); return extract_child_expr(expr, &expr->lhs); - } - - if (optlevel >= 2 && lhs->pure) { + } else if ((lhs->always_true && rhs == &expr_true) + || (lhs->always_false && rhs == &expr_false)) { + debug_opt(state, "-O1: redundancy elimination: %e <==> %e\n", expr, lhs); + return extract_child_expr(expr, &expr->lhs); + } else if (optlevel >= 2 && lhs->pure) { debug_opt(state, "-O2: purity: %e <==> %e\n", expr, rhs); return extract_child_expr(expr, &expr->rhs); } -- cgit v1.2.3