Ошибка llvm: найдено более одного преемника посадочной площадки

у lvm ​​есть MachineVerifier проход, который проверяет MachineFunction для корректности на основе различных параметров, таких как: Живучесть, мертвый базовый блок, правильный класс регистра и т.д. Недавно я столкнулся с этой ошибкой из прохода MachineVerifier.
Мне интересно, почему не хорошо иметь несколько преемников посадочной площадки?
В примере я получаю эту ошибку, макет (IR) выглядит следующим образом;

BB0:
...
succ: BB1BB1: EH_LANDING_PAD
pred: BB0, BB1
...
succ: BB1, BB2BB2: EH_LANDING_PAD
...

Bad machine code: MBB has more than one landing pad successor ***
- function:    _Z7ex_testv
- basic block: BB#1 lpad (0x1bf7c90)
LLVM ERROR: Found 1 machine code errors.

Означает ли это, что в случае возникновения исключения обработка исключения будет неоднозначной. Может кто-нибудь, пожалуйста, объясните. Благодарю.

0

Решение

Да. Несколько посадочных площадок запрещено. посадочная площадка — то, где исключение приземляется размотчиком. Строго говоря, нет проблем обработки посадочных площадок с непересекающимися типами информации, но когда вы, например, имеете. очистка или фильтр вы можете закончить в беде …

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]