[WinEH] Emit __C_specific_handler tables for the new IR
authorReid Kleckner <rnk@google.com>
Thu, 1 Oct 2015 21:38:24 +0000 (21:38 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 1 Oct 2015 21:38:24 +0000 (21:38 +0000)
commit646073b30f09ba58353698432dccf8a3af0ff895
treef71fa4be152132dc8b297a3360cdd0ca26017d21
parent4d46a2bcbc958ae5ce3aaa0c4175e5ebd5802ec2
[WinEH] Emit __C_specific_handler tables for the new IR

We emit denormalized tables, where every range of invokes in the same
state gets a complete list of EH action entries. This is significantly
simpler than trying to infer the correct nested scoping structure from
the MI. Fortunately, for SEH, the nesting structure is really just a
size optimization.

With this, some basic __try / __except examples work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249078 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/WinEHFuncInfo.h
lib/CodeGen/AsmPrinter/EHStreamer.h
lib/CodeGen/AsmPrinter/WinException.cpp
lib/CodeGen/WinEHPrepare.cpp
lib/Target/X86/X86FrameLowering.cpp
test/CodeGen/X86/seh-catchpad.ll [new file with mode: 0644]