[LLVMdev] How to Check whether BasicBlock resides in a conditional branch

Jianfei Hu hujianfei258 at gmail.com
Sat Aug 25 05:43:22 PDT 2012


Hello All,

I want to dertermine whether a basicblock is in a conditional branch. such as,

//=============================
if a > 2 // BasicBlock A
then

BasicBlock B

endif

BasicBlock C
//=============================
What I want to identify is BasicBlock B, which is in a condtional
block. but C is not.
In other words, I want to distinguish BasicBlocks that  * must *  be
executed and that *may* be executed.

CFG's iterator may not help, as  LLVM IR br would be:
A:
br %cmp,  %lable.B,  %label.C

B
br C

C

both of the blocks could be operand of br instruction.

code in C *must be executed*, but B is not.


Is there any availiable API in LLVM to distinguish them?

Thanks.



More information about the llvm-dev mailing list