В официальной документации говорится, что инструкция invoke
переходит в нормальное состояние, когда вызываемая функция возвращается с инструкцией ret
. В противном случае он переходит к метке исключения.
Я думаю, есть сигнал, чтобы сказать, удовлетворяет ли он нормальному условию метки или нет. Если я пишу проход с использованием LLVM IR, как я могу подать сигнал (если он существует) или изменить инструкцию invoke
на call
с обработкой исключений.
Как правило, невозможно определить, не будет ли функция генерировать исключение, не запустив ее. Итак, нет такого условия, которое можно было бы проверить статически.
Можно использовать ReplaceInstWithInst()
от llvm.org/doxygen/BasicBlockUtils_8h.html
Большое спасибо. Ну, я также искал, что
invoke
иcall
могут обрабатывать исключение. Как я могу преобразоватьinvoke
вcall
с помощью стратегии обработки исключений?