2013-08-18 2 views
0

Я хочу удалить UnreachableInst, так как предыдущее преобразование сделало его доступным. Однако вызов eraseFromParent() дает мне неправильный BasicBlock, поскольку UnreachableInst является терминатором его BasicBlock. Как исправить базовый блок для завершения в инструкции, предшествующей UnreachableInst?Llvm Удалить Terminator Инструкция

ответ

1

Каждый базовый блок должен заканчиваться терминатором. Я думаю, что самый простой способ для удаления недостижимых инструкции, то, чтобы заменить его с другим терминатором - например, филиал в следующий базовый блок, возвращенной инструкции и т.д.

Посмотрите на llvm::ReplaceInstWithInst в BasicBlockUtils.h для удобного способа замены одной команды другим.