From 7da0d28318c97f1f3d629f13daad9ec824254709 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 15 Dec 2017 12:40:37 -0500 Subject: Keep track of required FDs per-expr --- opt.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'opt.c') diff --git a/opt.c b/opt.c index 405f995..a7ebbe2 100644 --- a/opt.c +++ b/opt.c @@ -571,6 +571,19 @@ static struct expr *optimize_expr_recursive(struct opt_state *state, struct expr goto done; } + struct expr *lhs = expr->lhs; + struct expr *rhs = expr->rhs; + if (rhs) { + expr->persistent_fds = rhs->persistent_fds; + expr->ephemeral_fds = rhs->ephemeral_fds; + } + if (lhs) { + expr->persistent_fds += lhs->persistent_fds; + if (lhs->ephemeral_fds > expr->ephemeral_fds) { + expr->ephemeral_fds = lhs->ephemeral_fds; + } + } + if (expr->always_true) { set_facts_impossible(&state->facts_when_false); } -- cgit v1.2.3