Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / CodeGenObjCXX / catch-id-type.mm
blob0a93388cbbc0c35c3d50afcd3f001007bc8b32a3
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
3 @interface ns_array
4 + (id) array;
5 @end
7 @implementation ns_array
8 + (id) array { return 0; }
9 @end
11 id Groups();
13 @protocol P @end;
15 @interface INTF<P> {
16     double dd;
18 @end
20 id FUNC() {
21     id groups;
22     try
23     {
24       groups = Groups();  // throws on errors.
25     }
26     catch( INTF<P>* error )
27     {
28       Groups();
29     }
30     catch( id error )
31     { 
32       // CHECK:      landingpad { ptr, i32 }
33       // CHECK-NEXT:   catch ptr @_ZTIPU11objcproto1P4INTF
34       // CHECK-NEXT:   catch ptr @_ZTIP11objc_object
35       // CHECK-NEXT:   catch ptr @_ZTIP10objc_class
36       error = error; 
37       groups = [ns_array array]; 
38     }
39     catch (Class cl) {
40       cl = cl;
41       groups = [ns_array array];
42     }
43     return groups;
47 int main() {
48   FUNC();
49   return 0;