llvm - 获取br指令的标签

llvm - 获取br指令的标签

问题描述:

我的问题很简单。给定类型分支的指令,我如何从中提取标签? 例如:llvm - 获取br指令的标签

br label %while.cond 

应该给我while.cond

br label %while.end 

应该给我while.end

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

应,if.then,分别若if.end给我。

+0

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

+0

我试过了。它返回的情况下,如果它存在,当它没有,如%if.end,它返回整个基本块。 – eren555

首先检查inst->isConditional(),然后访问inst->getOperand(1)inst->getOperand(2)如果它为真,并且inst->getOperand(0)如果它是假的。

整个BasicBlock是BranchInst实际接受的。如果你想要%if.then一行,那就打电话getName()就可以了。