]> granicus.if.org Git - clang/commit
Implement IRGen for SEH __finally and AbnormalTermination
authorReid Kleckner <reid@kleckner.net>
Wed, 4 Feb 2015 22:37:07 +0000 (22:37 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 4 Feb 2015 22:37:07 +0000 (22:37 +0000)
commit7de7ebca0f2c462e10c464b88413ccaadcf3f8b4
treef9858adff72c9752f75460f62741222e1572d062
parent749d8549d3bc53c1a4abbfd781997df7a3cd2006
Implement IRGen for SEH __finally and AbnormalTermination

Previously we would simply double-emit the body of the __finally block,
but that doesn't work when it contains any kind of Decl, which we can't
double emit.

This fixes that by emitting the block once and branching into a shared
code region and then branching back out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228222 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Builtins.def
lib/CodeGen/CGBuiltin.cpp
lib/CodeGen/CGException.cpp
lib/CodeGen/CodeGenFunction.cpp
lib/CodeGen/CodeGenFunction.h
test/CodeGen/exceptions-seh-finally.c
test/CodeGen/exceptions-seh.c
test/Sema/__try.c