3

基本ブロックのインデックスを取得するのにいくつか問題があります。

for (Function::iterator II = F.begin(), EE = F.end(); II != EE; ++II, ++ii) 
{  BasicBlock* BB=II;

segfaultがあるか、LLVMで見つけたいくつかのメソッドの複雑な構造を使用できません。で見つけたメソッドをできるだけ簡単に使用する方法を知っていますか?

http://llvm.org/doxygen/Instructions_8h_source.html#l02136

http://llvm.org/doxygen/EdgeBundles_8cpp_source.html#l00078

または同等のもの?基本ブロックのIDを取得したいだけです。

ありがとうございました !

4

1 に答える 1

2

上記のコメントで Eli Bendersky が指摘したように、それはインデックスの解釈に依存します。基本ブロックの一意の識別子にのみ関心がある場合、基本ブロックの名前は関数内で一意です。を使用してそれを取得できます

BB->getName()

アルゴリズムの性質に依存する、基本ブロックに関連付けられた他のタイプの ID があります。たとえば、Keith Cooper による反復フィンガー アルゴリズムを使用してドミネーター ツリー構築アルゴリズムを作成している場合、各基本ブロックをインクリメンタル ID に逆深さ優先順で関連付けます。この ID は BasicBlock 構造体の一部ではなく、ユーザーが管理する必要があります。

于 2012-12-22T04:17:58.050 に答える