[PATCH] D154294: [Windows SEH]: Do not fold branches for MSVC TableSEH function

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 30 15:55:22 PDT 2023

rnk added a comment.

In D154294#4629535 <https://reviews.llvm.org/D154294#4629535>, @efriedma wrote:

> hasEHPadSuccessor() is actually false for the block that throws the exception.  I think that's a bug... but everybody else who's looked at this code apparently disagrees with me.

Now I see what you mean, sorry it took me a while to work out what you meant about the bad CFG. :) We have no seh.try.end() blocks in this example. They've all been deleted in the mid-level because of the unreachable.

We've arrived once again at my favorite core struggle with LLVM IR: the lack of regions.

I can think of two ways to proceed:

- We can continue with the existing IR by trying to identify try regions and adding extra unwind edges to MBBs in the try state
- We can continue with a fictional, imperfect Machine CFG, and attempt to retain the seh.try.end intrinsics by adding a fictional edge from begin to end, so `unreachable` won't destroy the try scope information.

  rG LLVM Github Monorepo



More information about the llvm-commits mailing list