Я хочу удалить UnreachableInst, так как предыдущее преобразование сделало его доступным. Однако вызов eraseFromParent() дает мне неправильный BasicBlock, поскольку UnreachableInst является терминатором его BasicBlock. Как исправить базовый блок для завершения в инструкции, предшествующей UnreachableInst?Llvm Удалить Terminator Инструкция
0
A
ответ
1
Каждый базовый блок должен заканчиваться терминатором. Я думаю, что самый простой способ для удаления недостижимых инструкции, то, чтобы заменить его с другим терминатором - например, филиал в следующий базовый блок, возвращенной инструкции и т.д.
Посмотрите на llvm::ReplaceInstWithInst
в BasicBlockUtils.h для удобного способа замены одной команды другим.