`Builder.GetInsertBlock()` may return null sometimes. https://godbolt.org/z/n1Ph47jP1 Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D147867
32 lines
766 B
C++
32 lines
766 B
C++
// RUN: %clang_cc1 -triple x86_64-windows -fasync-exceptions -fcxx-exceptions -fexceptions -fms-extensions -x c++ -Wno-implicit-function-declaration -S -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();
|
|
}
|