1、llvm中有种特殊的lcssa (Loop Close SSa), 参考LLVM Loop Terminology (and Canonical Forms) — LLVM 13 documentation
一个lcssa的形式是PHI中只有一个结点,因此是冗余的,只是方便循环的优化,%add673.lcssa = phi i32 [ %add673, %for.body639 ]
可以通过接口addIncoming(Value *V, BasicBlock *BB)增加PHI结点中的值,LCSSA的旧值获取方法
小技巧:使用for (PHINode &LCSSAPhi : LoopExitBlock->phis())获取LCSSA Ph结点