LLVM performs its optimization passes on the LLVM bitcode itself (the "middle-end" of the compiler), before finally translating the optimized bitcode into machine-specific binary code.
Not an LLVM expert though, I could be glossing over a few details.
Not an LLVM expert though, I could be glossing over a few details.