Some code optimizations are carried out on the intermediate code because:
1. they enhance the portability of the compiler to other target processors
2. program analysis is more accurate on intermediate code than on machine code
3. the information from data flow analysis cannot otherwise be used for optimization
4. the information from the front end cannot otherwise be used for optimization