2016-03-24 25 views
0

LLVM IR(基本ブロックのターミネータ)の条件付き分岐命令の場合、ソースコードのループまたはif文に対応するかどうかを確認したいと思います。これを分析する方法はありますか?LLVM分岐命令:if文またはループ内のif?

+0

LLVM IRを扱う場合、必ずしもソースコードの概念である必要はありません。あなたは話していますか? IRはCまたはC++コードからclangによって生成されますか? –

+0

はい!それが私の意図です(IRはCのclangによって生成されました)。 – Seves

答えて

2

概念的に、ブランチフォワードは「ifステートメント」であり、ブランチ後方はループです。しかし、これはいくつかの複雑さの背後に隠れているかもしれません。フロントエンドは条件付きブランチフォワードを作成して、無条件ブランチを後ろ向きにして全体的にループにすることができます。

確実に知りたい場合は、デバッグ情報を含むIRを生成し、その情報、特に行番号を使用して元のコードの内容を理解してください。