0

中間コードを変更するLLVMパスを作成しています。基本ブロックの各終了命令をチェックして、バックエッジがあるかどうかを確認したいと思います。land.lhs.trueより明確にするために、次の例では、ラベルに到達するかどうかを確認したいのですがif.end、バックジャンプが必要です。

entry:
  %pa = alloca %struct.Vertex, align 4
  .........
  br i1 %cmp, label %land.lhs.true, label %if.end
4

1 に答える 1

0

LLVM中間コードにはメモリ内に明示的なレイアウトがないため、ここでバックエッジまたはバックジャンプの意味がわかりません。各関数内の基本ブロックには、明示的な順序やメモリアドレスへの明示的な割り当てがないことを考える必要があります。これは、アセンブリコードを発行するときにバックエンドによって処理されます。

于 2012-08-09T13:45:34.277 に答える