gpt4 book ai didi

c++ - LLVM 错误 : Found more than one landing-pad successor

转载 作者:行者123 更新时间:2023-11-28 03:17:15 31 4
gpt4 key购买 nike

llvm 有一个 MachineVerifier channel ,它根据不同的参数检查 MachineFunction 的正确性,例如: active 死基本 block 正确的寄存器类 等。最近我从 MachineVerifier pass 中遇到了这个错误。我想知道为什么不能有多个着陆台后继者?在我收到此错误的示例中,布局 (IR) 是这样的;

BB0: 
...
succ: BB1


BB1: EH_LANDING_PAD
pred: BB0, BB1
...
succ: BB1, BB2


BB2: 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.

是不是说如果发生了异常,异常处理就会有歧义。有人可以解释一下吗?谢谢。

最佳答案

是的。禁止使用多个着陆垫。 landing pad 是异常被 unwinder 降落的地方。严格来说,使用不相交的类型信息处理着陆垫没有问题,但是当你有例如清理或过滤你可能会遇到麻烦......

关于c++ - LLVM 错误 : Found more than one landing-pad successor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16453984/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com