Revert "[llvm] Improve llvm.objectsize computation by computing GEP, alloca and mallo...
[llvm-project.git] / clang / test / Rewriter / rewrite-modern-try-catch-finally.m
blobcdf79dbd306a9791568bcdf1dac632b0de440729
1 // RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2 // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
4 typedef struct objc_class *Class;
5 typedef struct objc_object {
6     Class isa;
7 } *id;
9 extern int printf(const char *, ...);
11 int main(void) {
12   @try {
13   } 
14   @finally {
15   }
16   while (1) {
17     @try {
18       printf("executing try");
19       break;
20     } @finally {
21       printf("executing finally");
22     }
23     printf("executing after finally block");
24   }
25   @try {
26     printf("executing try");
27   } @finally {
28     printf("executing finally");
29   }
30   return 0;
33 void test2_try_with_implicit_finally(void) {
34     @try {
35         return;
36     } @catch (id e) {
37         
38     }
41 void FINALLY(void);
42 void TRY(void);
43 void CATCH(void);
45 @interface NSException
46 @end
48 @interface Foo
49 @end
51 @implementation Foo
52 - (void)bar {
53     @try {
54         TRY();
55     } 
56     @catch (NSException *e) {
57         CATCH();
58     }
59     @finally {
60         FINALLY();
61     }
63 @end