There seems to be space for middle ground available then...
if IR_count > ...
warn "Can't run optimiser ... pass on {func} (too large)"
else
run_pass