| // RUN: %clang_cc1 -triple x86_64-windows -fasync-exceptions -fcxx-exceptions -fexceptions -fms-extensions -x c++ -Wno-implicit-function-declaration -emit-llvm %s -o - | FileCheck %s |
| |
| // CHECK: define dso_local void @"?foo@@YAXXZ |
| // CHECK: invoke void @llvm.seh.try.begin() |
| // CHECK-NOT: llvm.seh.scope.begin |
| // CHECK-NOT: llvm.seh.scope.end |
| |
| // FIXME: Do we actually need llvm.seh.scope*? |
| void foo() { |
| try {} |
| catch (...) { |
| return; |
| } |
| } |
| |
| __declspec(noreturn) void bar(); |
| class baz { |
| public: |
| ~baz(); |
| }; |
| |
| // CHECK: define dso_local void @"?qux@@YAXXZ |
| // CHECK: invoke void @llvm.seh.scope.begin() |
| // CHECK-NOT: llvm.seh.try |
| // CHECK-NOT: llvm.seh.scope.end |
| |
| // We don't need to generate llvm.seh.scope.end for unreachable. |
| void qux() { |
| baz a; |
| bar(); |
| } |