[PATCH] Initial SEH IR generation implementation

Reid Kleckner rnk at google.com
Fri Oct 3 13:59:28 PDT 2014


Hi rjmccall, rsmith, majnemer,

Most of the complexity here is emitting filter expressions as standalone
LLVM functions. The filter functions are used in catch clauses in place
of type_info globals, and LLVM does the rest of the lowering.

Major aspects that still need work:
- __try body outlining with noinline and optnone.
- Cleanup support for __finally and destructors. LLVM won't be able to
  lower the current IR to anything useful.
- Local variable access in filter expressions.
- Don't use TLS to figure out which filter function fired. This requires
  work in LLVM.

http://reviews.llvm.org/D5607

Files:
  include/clang/AST/Decl.h
  include/clang/AST/Mangle.h
  include/clang/Basic/Builtins.def
  include/clang/Basic/DiagnosticCommonKinds.td
  include/clang/Basic/DiagnosticParseKinds.td
  include/clang/Sema/Scope.h
  lib/AST/ItaniumMangle.cpp
  lib/AST/MicrosoftMangle.cpp
  lib/CodeGen/CGBuiltin.cpp
  lib/CodeGen/CGException.cpp
  lib/CodeGen/CodeGenFunction.cpp
  lib/CodeGen/CodeGenFunction.h
  lib/Parse/ParseStmt.cpp
  lib/Sema/JumpDiagnostics.cpp
  lib/Sema/Scope.cpp
  lib/Sema/SemaChecking.cpp
  test/CodeGen/exceptions-seh-leave.c
  test/CodeGen/exceptions-seh.c
  test/OpenMP/parallel_codegen.cpp
  test/Sema/__try.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5607.14405.patch
Type: text/x-patch
Size: 39564 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141003/c6deb03f/attachment.bin>


More information about the cfe-commits mailing list