Home | History | Annotate | Download | only in CodeGenObjCXX
      1 // RUN: %clang_cc1 -triple i386-apple-macosx10.6.6 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions -fcxx-exceptions -fexceptions -o - %s | FileCheck %s
      2 // rdar://8940528
      3 
      4 @interface ns_array
      5 + (id) array;
      6 @end
      7 
      8 @implementation ns_array
      9 + (id) array { return 0; }
     10 @end
     11 
     12 id Groups();
     13 
     14 @protocol P @end;
     15 
     16 @interface INTF<P> {
     17     double dd;
     18 }
     19 @end
     20 
     21 id FUNC() {
     22     id groups;
     23     try
     24     {
     25       groups = Groups();  // throws on errors.
     26     }
     27     catch( INTF<P>* error )
     28     {
     29       Groups();
     30     }
     31     catch( id error )
     32     { 
     33       // CHECK:      landingpad { i8*, i32 }
     34       // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIPU11objcproto1P4INTF to i8*)
     35       // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIP11objc_object to i8*)
     36       // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIP10objc_class to i8*)
     37       error = error; 
     38       groups = [ns_array array]; 
     39     }
     40     catch (Class cl) {
     41       cl = cl;
     42       groups = [ns_array array];
     43     }
     44     return groups;
     45 
     46 }
     47 
     48 int main() {
     49   FUNC();
     50   return 0;
     51 }
     52