生成された IR コードを分析および変更する LLVM パスを作成しています。バックエッジを特定する方法はありますか? BasicBlock の後継者が実際にパスのどこかにあるかどうかを知ることを意味します。
1 に答える
2
はいあります。
まず、「BB へのすべてのパスは A を通過する必要がある」と「BB につながる可能性のある A からのパスがある」を区別する必要があることに注意してください。
最初の状況を探していると思います - 基本ブロック BB の後続の A が、実行が B に到達するために通過しなければならない基本ブロックであるかどうかを教えてください。
このような状況が発生したとき、「A が B を支配している」と言います。優位性をチェックするインターフェースは、DominatorTreeクラスを介して行われます (パスの getAnalysisUsage 関数に追加します。例については、llvm パスの記述を参照してください)。
于 2012-08-26T08:15:06.960 に答える