]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenObjC/gnu-exceptions.m
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGenObjC / gnu-exceptions.m
1 // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gcc -o - %s | FileCheck %s
2 // RUN: %clang_cc1 -triple x86_64-unknown-freebsd -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gnustep-1.7 -o - %s | FileCheck -check-prefix=NEW-ABI %s
3
4 void opaque(void);
5 void log(int i);
6
7 @class C;
8
9 // CHECK: define void @test0() [[TF:#[0-9]+]]
10 // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gnu_objc_personality_v0 to i8*)
11 void test0() {
12   @try {
13     // CHECK: invoke void @opaque()
14     opaque();
15
16     // CHECK: call void @log(i32 1)
17
18   } @catch (C *c) {
19     // CHECK:      landingpad { i8*, i32 }
20     // CHECK-NEXT:   catch i8* getelementptr inbounds ([2 x i8], [2 x i8]* @0, i64 0, i64 0)
21     // CHECK:      br i1
22
23     // CHECK: call void @log(i32 0)
24
25     // CHECK: resume
26     // NEW-ABI: objc_begin_catch
27     // NEW-ABI: objc_end_catch
28
29     log(0);
30   }
31
32   log(1);
33 }
34
35 // CHECK: attributes [[TF]] = { noinline "{{.*}} }