代码hoisting实施llvm通过的llvm通过。我遵循的参考是龙龙书(编译器:Aho,Lam,Sethi和Ullman的原理,技术和工具)[第9.5节,PG.645]。数据流程方程如下: 审查表达式数据流程方程
类别f_B(x) = e_use_B ∪ (x - e_kill_B)
结合条件会(∧)equiations原始化IN[B] = U
。
,否则,由于我在集。
BB
(对于所有块)仍然为SSA形式的预期表达式提供正确的解决方案吗?还是原始书的状况也有意义,即使在SSA中?
洞察这种修改是否保留基于SSA的数据流分析中的正确性。任何解释或反例都将不胜感激。
表达式 | |
---|---|
返回 | |
IN[EXIT] = ∅ |
|
Intersection ( ∩ ) |
|
IN[B] = f_B(OUT[B]) |
|
OUT[B] = ∩ { IN[S] | S ∈ succ(B) } |
问题 根据这本书的符合条件,除出口块外,所有块的initialization条件均为 |
lllvmir(SSA表格)上实施此通行财产。这意味着表达式仍应正确地传播,并且会议操作(交叉点)自然会完善IN[BB] = ∅ | discussion点将在全球范围内设置 |