]> granicus.if.org Git - clang/commit
[SEH] Outline finally blocks using the new variable capture support
authorReid Kleckner <reid@kleckner.net>
Thu, 9 Apr 2015 20:37:24 +0000 (20:37 +0000)
committerReid Kleckner <reid@kleckner.net>
Thu, 9 Apr 2015 20:37:24 +0000 (20:37 +0000)
commit1a48caef667809dd31a47565fefbfbbe33ec4e39
tree15412636b406b43b48990d8cd3ebafdf25830c0f
parent3a19309ae09f85ec77f01b1eaa197b403676b6c0
[SEH] Outline finally blocks using the new variable capture support

WinEHPrepare was going to have to pattern match the control flow merge
and split that the old lowering used, and that wasn't really feasible.

Now we can teach WinEHPrepare to pattern match this, which is much
simpler:
  %fp = call i8* @llvm.frameaddress(i32 0)
  call void @func(iN [01], i8* %fp)

This prototype happens to match the prototype used by the Win64 SEH
personality function, so this is really simple.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234532 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Mangle.h
lib/AST/ItaniumMangle.cpp
lib/AST/MicrosoftMangle.cpp
lib/CodeGen/CGException.cpp
lib/CodeGen/CGStmt.cpp
lib/CodeGen/CodeGenFunction.cpp
lib/CodeGen/CodeGenFunction.h
test/CodeGen/exceptions-seh-finally.c
test/CodeGen/exceptions-seh-leave.c
test/CodeGen/exceptions-seh.c