reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // RUN: %clang -fexceptions -fobjc-exceptions -S -emit-llvm %s -o /dev/null @interface Object { @public Class isa; } +initialize; +alloc; +new; +free; -free; +(Class)class; -(Class)class; -init; -superclass; -(const char *)name; @end @interface Frob: Object @end @implementation Frob: Object @end static Frob* _connection = ((void *)0); extern void abort(void); void test (Object* sendPort) { int cleanupPorts = 1; Frob* receivePort = ((void *)0); @try { receivePort = (Frob *) -1; _connection = (Frob *) -1; receivePort = ((void *)0); sendPort = ((void *)0); cleanupPorts = 0; @throw [Object new]; } @catch(Frob *obj) { if(!(0)) abort(); } @catch(id exc) { if(!(!receivePort)) abort(); if(!(!sendPort)) abort(); if(!(!cleanupPorts)) abort(); } } |