[英]How to remove a successor from a terminator instruction in LLVM
對於基本塊,我想將條件跳轉更改為無條件跳轉。 因此,如果一個基本塊有兩個后繼者,那么我要刪除其中一個后繼者的邊緣。 我希望基本塊直接跳到后繼之一。 我怎樣才能做到這一點?
為了說明我的觀點,我想改變
A
/ \
/ \
B C
至
A
\
\
C
我認為最簡單的方法就是創建一個新的無條件分支指令,然后用它替換舊的。 因此,類似:
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
BranchInst* Old = ...
BranchInst* New = BranchInst::Create(Old->getSuccessor(X));
ReplaceInstWithInst(Old, New);
X
是0還是1,取決於您是否要使用“ true”分支或“ false”分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.