Pipeline phase breakdown from Phase: lines under --log-times
Σ infer_ast is the sum of every function's infer_ast body-inference timing (the same total as in the table above). overhead = fundef_pass − Σ infer_ast: time spent inside the Fundef loop that isn't attributed to any function body — PAst.transform per function, dispatch (StrMap lookups, idenv union), and GC between calls.
invalid mlsem AST: Upper bound must be larger than lower bound
2
untypeable coercion
1
Functions typed as empty typed, but the inferred result is empty (bottom)
An empty return means inference found no usable value — usually a red flag, though it can be legitimate for bail-out helpers (e.g. bail_if-style functions that never return). Drill into a package and use the empty return only filter to see which functions.