2017-12-27 47 views
1

私の質問は簡単です。ブランチタイプの指示が与えられた場合、どのようにラベルを抽出するのですか?たとえば :llvm - br命令のラベルを取得

br label %while.cond 

br label %while.end 

br i1 %cmp1, label %if.then, label %if.end 

はそれぞれ私にif.then、if.end、場合を与える必要がありwhile.end私を与える必要がありwhile.cond私を与える必要があります。

+0

'inst-> getOperand(0)'? – arrowd

+0

私はそれを試みた。条件が存在する場合は条件を返し、そうでない場合は%if.endのように基本ブロック全体を返します。 – eren555

答えて

0

最初のチェックinst->isConditional()の場合は、inst->getOperand(1)inst->getOperand(2)、それが偽の場合はinst->getOperand(0)にアクセスします。

BasicBlock全体が実際に受け入れるものはBranchInstです。 %if.then行が必要な場合は、getName()を呼び出してください。