I realize that LLVM has a long way to go, but theoretically, can the optimizations that are in GCC/ICC/etc. for individual languages be applied to LLVM byte code? If so, does t
It is an interesting question, but I am afraid that you are lacking some notions of what compilers do.
There will always be several stages of optimizations within a compiler.
The LLVM compiler applies all 3... but starting from LLVM IR, not from C or Java or whatever.
It is the job of the front-end to provide a suitable LLVM IR.
For example, as noted by @Dietrich Epp, the IR is not really suitable for Functional Languages. A lot of Haskell optimizations must therefore be performed before the representation is lowered to the IR.
Another source of non-optimization is that specific runtime may come with the languages. Haskell has a complicated runtime with sparks pool, lightweight-threads, preemption before system calls, work-stealing etc... The IR is not suitable to represent this rich environment, and no optimization is made on this organization.