blob: a756bfba417c896bb40c3e350bb75e8f9f1d4dee [file] [log] [blame]
John McCall5fb5df92012-06-20 06:18:46 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.8 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s -check-prefix=CHECK-WITH
2// RUN: %clang_cc1 -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.7 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s -check-prefix=CHECK-WITHOUT
John McCall9de19782011-07-06 01:22:26 +00003
4void destroy(void**);
5
6// rdar://problem/9519113
7void test0(void) {
8 void test0_helper(void);
9 void *ptr __attribute__((cleanup(destroy)));
10 test0_helper();
11
Stephen Lin43622612013-08-15 06:47:53 +000012 // CHECK-WITH-LABEL: define void @test0()
David Majnemerfcbdb6e2015-06-17 20:53:19 +000013 // CHECK-WITH-SAME: personality i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
John McCall9de19782011-07-06 01:22:26 +000014 // CHECK-WITH: [[PTR:%.*]] = alloca i8*,
15 // CHECK-WITH: call void @destroy(i8** [[PTR]])
16 // CHECK-WITH-NEXT: ret void
17 // CHECK-WITH: invoke void @destroy(i8** [[PTR]])
David Majnemerfcbdb6e2015-06-17 20:53:19 +000018 // CHECK-WITH: landingpad { i8*, i32 }
Bill Wendlingf0724e82011-09-19 20:31:14 +000019 // CHECK-WITH-NEXT: catch i8* null
John McCall9de19782011-07-06 01:22:26 +000020 // CHECK-WITH-NEXT: call void @objc_terminate()
21
Stephen Lin43622612013-08-15 06:47:53 +000022 // CHECK-WITHOUT-LABEL: define void @test0()
David Majnemerfcbdb6e2015-06-17 20:53:19 +000023 // CHECK-WITHOUT-SAME: personality i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
John McCall9de19782011-07-06 01:22:26 +000024 // CHECK-WITHOUT: [[PTR:%.*]] = alloca i8*,
25 // CHECK-WITHOUT: call void @destroy(i8** [[PTR]])
26 // CHECK-WITHOUT-NEXT: ret void
27 // CHECK-WITHOUT: invoke void @destroy(i8** [[PTR]])
David Majnemerfcbdb6e2015-06-17 20:53:19 +000028 // CHECK-WITHOUT: landingpad { i8*, i32 }
Bill Wendlingf0724e82011-09-19 20:31:14 +000029 // CHECK-WITHOUT-NEXT: catch i8* null
John McCall9de19782011-07-06 01:22:26 +000030 // CHECK-WITHOUT-NEXT: call void @abort()
31}