But an LLM will generate you two completely different things today and tomorrow. Heck, even if you stash its changes and redo the same prompt.
They are NOT comparable at all.
Just that comparing LLM to a compiler is nonsense. Because one is deterministic and the more using it, the better the quality will get.
That indirection, in the case of LLMs, is formal proof. It can actually turn an LLM into a sort of compiler. Where, if the compiler run completes successfully, you don't need another run, and you are sure it is correct.
In that sense it's a lot closer to translating Italian to English than what LLMs are doing.
I trust LLMs a lot more if I have a complete Go program I want them to rewrite in Rust.