<div dir="ltr"><div><div>Sorry for the pollute, I later found that DeleteDeadBlock(BasicBlock *B) inside BasicBlockUtils.h might be helpful since it just removes those blocks without any predecessors. Now I am using Function::iterator with this function to remove those dangling basicblock nodes. However I still have no idea whether this can prune ALL the suspicious blocks, in theory(still the presiquite, no optimization and only for if-else like branches). And is there a better way?<br>
<br></div>Thanks,<br></div>Hongxu Chen<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Sep 18, 2013 at 5:45 PM, Hongxu Chen <span dir="ltr"><<a href="mailto:leftcopy.chx@gmail.com" target="_blank">leftcopy.chx@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi,<br><br></div><div>   I am trying to prune some uninteresting llvm ir branches, corresponding to the *if-else* condition in the source code. And here is the procedures:<br>
<br></div><div>   1. Get the BasicBlock containing the BranchInst which has 2 successors(in order to keep consistent with the source code I am using the llvm ir without any optimizations, so SelectInst/SwitchInst/PHINode is absent), one of which should be pruned; let's name these 2 branches bb1 and bb2 and bb2 is to be pruned.<br>

</div><div>   2. Find their nearest common post dominator, bb_join<br></div><div>   3. Create a new branInst bb_new whose successors are bb1 and bb_join; replace the original BranchInst with bb_new<br></div><div>   4. For bb2, dropAllReferences && eraseFromParent<br>

</div><div><br></div><div>However since bb2 also has several successors(before bb_join), which are not pruned together with bb2. Is there any existing API to remove them as well?<br><br></div><div>Also, in Step 4, could I just call bb2->eraseFromParent() without dropping any references? I am a bit confused with the function dropAllReferences.<br>

<br></div><div>Thanks,<br></div><div>Hongxu Chen<br></div><br>   <br></div>
</blockquote></div><br></div>