Forward from: 彩虹桥
M.K.: like, the assumption of a classical compiler is,
0: I dont know high level program semantic because decision procedure on infinite space is very hard, so I cant do algorithm optimization
1: I dont know the cost model so I cant even do datastructure optimization (e.g. unboxing, soa)
2: So I can only do micro optimization like strength reduction and inlining and deadcode elimination and constant propagation (if you just have this big 4 the compiler is already very good - all else is diminishing marginal return)