Revert "[llvm] Improve llvm.objectsize computation by computing GEP, alloca and mallo...
[llvm-project.git] / clang / test / Rewriter / rewrite-modern-block.mm
blob6841ab4a5a00fd12f18e669762170dc3624ff94a
1 // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2 // RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
4 typedef unsigned long size_t;
5 typedef struct {
6     char byte0;
7     char byte1;
8 } CFUUIDBytes;
10 void x(void *);
12 void y() {
13     __block CFUUIDBytes bytes;
14     
15     void (^bar)() = ^{
16         x(&bytes);
17     };
20 int foo() {
21     __block int hello;
22     return hello;
25 // rewriting multiple __block decls on wintin same decl stmt.
26 void radar7547630() {
27   __block int BI1, BI2;
29   __block float FLOAT1, FT2, FFFFFFFF3,
30    FFFXXX4;
32   __block void (^B)(), (^BB)();
35 // rewriting multiple __block decls on wintin same decl stmt
36 // with initializers.
37 int  rdar7547630(const char *keybuf, const char *valuebuf) {
38   __block int BI1 = 1, BI2 = 2;
40   double __block BYREFVAR = 1.34, BYREFVAR_NO_INIT, BYREFVAR2 = 1.37;
42   __block const char *keys = keybuf, *values = valuebuf, *novalues;
44   return BI2;
47 typedef struct _z {
48     int location;
49     int length;
50 } z;
52 z w(int loc, int len);
54 @interface rdar11326988
55 @end
56 @implementation rdar11326988 
57 - (void)y:(int)options {
58     __attribute__((__blocks__(byref))) z firstRange = w(1, 0);
59     options &= ~(1 | 2);
61 @end
63 int Test18799145() { return ^(){return 0;}(); }