OLLVM flatten如何支持异常呢?

开源实现里面都会加这个判断,然后跳过有LandingPad的块,不知道如何支持有LandingPad的平坦化呢?

 if (tmp->isEHPad() || tmp->isLandingPad()) 

去除这个限制后发现,LandingPad在demoteToStack的时候有些bug。

我的私有版支持啊

:joy::joy:可以讨论研究下吗

只会在OLLVM基础上瞎JB改的话是没法支持的。懂点LLVM的话这个其实很简单,稍微在CFG上Hack一下就能实现惹

另外Bug也不在demoteRegToStack。我估摸着你并没有理解这个Pass

想了好久。在cfg上操作一下,事先把所有landingpad过滤出来保存着不处理,把invoke的normal label改成while分发器,然后exception label保持landingpad可行不

没那么复杂

相关区域可以直接保持原样不动,改造成多分发器也是一个方案