下一章看下 SCEV 是如何对循环中的变量进行建模的。 函数getSCEV(V)生成变量 V 的 SCEV 表达式。 所以给定一系列操作数和类型,只会对应唯一的 SCEV 表达式。如果想比较两个 SCEV 表达式是否相同,只需要比较它们的指针是否相同即可。 但是,如果看 SCEV 表达式 %a /u %b,那么它对于 %loop 是循环不变的,可以提到循环外面。所以 SCEV 级别上的 domination / invariance 要强于 IR 级别。 4.3 SCEV 实现时间关系,没有读完 SCEV 源码。
-ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-pta -ftree-scev-cprop