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

Das, Dibyendu Dibyendu.Das at amd.com
Sat Aug 25 08:48:26 PDT 2012


In the general sense you may get some help by looking at the control dependence graph. 
- dibyendu

----- Original Message -----
From: Jianfei Hu [mailto:hujianfei258 at gmail.com]
Sent: Saturday, August 25, 2012 07:43 AM
To: LLVMdev at cs.uiuc.edu <LLVMdev at cs.uiuc.edu>
Subject: [LLVMdev] How to Check whether BasicBlock resides in a conditional	branch

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.
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev






More information about the llvm-dev mailing list