[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / CodeGenObjCXX / catch-id-type.mm
blob910ccfba6f7e93742ed222639bf9f8ea5757d720
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
4 @interface ns_array
5 + (id) array;
6 @end
8 @implementation ns_array
9 + (id) array { return 0; }
10 @end
12 id Groups();
14 @protocol P @end;
16 @interface INTF<P> {
17     double dd;
19 @end
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 { ptr, i32 }
34       // CHECK-NEXT:   catch ptr @_ZTIPU11objcproto1P4INTF
35       // CHECK-NEXT:   catch ptr @_ZTIP11objc_object
36       // CHECK-NEXT:   catch ptr @_ZTIP10objc_class
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;
48 int main() {
49   FUNC();
50   return 0;