Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGenCXX/noexcept.cpp
Show All 12 Lines | namespace test0 { | ||||
void test() noexcept { | void test() noexcept { | ||||
A a; | A a; | ||||
foo(); | foo(); | ||||
} | } | ||||
} | } | ||||
// CHECK-LABEL: define{{.*}} void @_ZN5test04testEv() | // CHECK-LABEL: define{{.*}} void @_ZN5test04testEv() | ||||
// This goes to the terminate lpad. | // CHECK: call unwindabort void @_ZN5test01AC1Ev( | ||||
// CHECK: invoke void @_ZN5test01AC1Ev( | // CHECK: call unwindabort void @_ZN5test03fooEv() | ||||
// CHECK-NEXT: unwind label %[[TERMINATE_LPAD:.*]] | |||||
// This also goes to the terminate lpad (no cleanups!). | |||||
// CHECK: invoke void @_ZN5test03fooEv() | |||||
// CHECK-NEXT: unwind label %[[TERMINATE_LPAD]] | |||||
// Destructors don't throw by default in C++11. | // Destructors don't throw by default in C++11. | ||||
// CHECK: call void @_ZN5test01AD1Ev( | // CHECK: call void @_ZN5test01AD1Ev( | ||||
// Cleanup lpad. | |||||
// CHECK: [[TERMINATE_LPAD]]: | |||||
// CHECK-NEXT: [[T0:%.*]] = landingpad | |||||
// CHECK-NEXT: catch ptr null | |||||
// CHECK-NEXT: [[T1:%.*]] = extractvalue { ptr, i32 } [[T0]], 0 | |||||
// CHECK-NEXT: call void @__clang_call_terminate(ptr [[T1]]) | |||||
// CHECK-NEXT: unreachable | |||||
// CHECK-LABEL: define linkonce_odr hidden void @__clang_call_terminate( | |||||
// CHECK: call ptr @__cxa_begin_catch( | |||||
// CHECK-NEXT: call void @_ZSt9terminatev() | |||||
// CHECK-NEXT: unreachable |