2013-08-18 67 views
0

我想刪除一個UnreachableInst,因爲之前的轉換已經使它可達。然而,調用eraseFromParent()給我一個格式不正確的BasicBlock,因爲UnreachableInst是它的BasicBlock的終結符。如何修復BasicBlock以終止UnreachableInst之前的指令?Llvm刪除終結者指令

回答

1

每個基本塊必須以終止符結束。我認爲,以去除不可達指令的最直接的方法,那麼,是另一個終止取代它 - 例如,一個分支進入下一個基本塊,返回指令等

看看BasicBlockUtils.h中的llvm::ReplaceInstWithInst用於方便地將一條指令替換爲另一條指令。