[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / CodeGenObjC / 2008-10-3-EhValue.m
blobbc4dfdbae05a7bfadabdb05ecd1c21d5cbaccc25
1 // RUN: %clang -fexceptions -fobjc-exceptions -S -emit-llvm  %s -o /dev/null
3 @interface Object {
4 @public
5      Class isa;
7 +initialize;
8 +alloc;
9 +new;
10 +free;
11 -free;
12 +(Class)class;
13 -(Class)class;
14 -init;
15 -superclass;
16 -(const char *)name;
17 @end
19 @interface Frob: Object
20 @end
22 @implementation Frob: Object
23 @end
25 static Frob* _connection = ((void *)0);
27 extern void abort(void);
29 void test (Object* sendPort)
31  int cleanupPorts = 1;
32  Frob* receivePort = ((void *)0);
34  @try {
35   receivePort = (Frob *) -1;
36   _connection = (Frob *) -1;
37   receivePort = ((void *)0);
38   sendPort = ((void *)0);
39   cleanupPorts = 0;
40   @throw [Object new];
41  }
42  @catch(Frob *obj) {
43   if(!(0)) abort();
44  }
45  @catch(id exc) {
46   if(!(!receivePort)) abort();
47   if(!(!sendPort)) abort();
48   if(!(!cleanupPorts)) abort();
49  }