1 // 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 2 3 // CHECK: define dso_local void @"?foo@@YAXXZ 4 // CHECK: invoke void @llvm.seh.try.begin() 5 // CHECK-NOT: llvm.seh.scope.begin 6 // CHECK-NOT: llvm.seh.scope.end 7 8 // FIXME: Do we actually need llvm.seh.scope*? foo()9void foo() { 10 try {} 11 catch (...) { 12 return; 13 } 14 } 15 16 __declspec(noreturn) void bar(); 17 class baz { 18 public: 19 ~baz(); 20 }; 21 22 // CHECK: define dso_local void @"?qux@@YAXXZ 23 // CHECK: invoke void @llvm.seh.scope.begin() 24 // CHECK-NOT: llvm.seh.try 25 // CHECK-NOT: llvm.seh.scope.end 26 27 // We don't need to generate llvm.seh.scope.end for unreachable. qux()28void qux() { 29 baz a; 30 bar(); 31 } 32