51 lines
		
	
	
		
			788 B
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			788 B
		
	
	
	
		
			Objective-C
		
	
	
	
| // 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();
 | |
|  }
 | |
| }
 |