The child times only include children that have exited, so your test is bad. This has nothing to do with the MLton compiler reporting 0 times for the assemble and link times. That could be caused by the real work being done by grandchildren, not children. I don't see any solution to that. Where in the source is the place where the fork/exec of gcc gets done?