brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 6841ab4 Raw
64 lines · plain
1// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp2// 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.cpp3 4typedef unsigned long size_t;5typedef struct {6    char byte0;7    char byte1;8} CFUUIDBytes;9 10void x(void *);11 12void y() {13    __block CFUUIDBytes bytes;14    15    void (^bar)() = ^{16        x(&bytes);17    };18}19 20int foo() {21    __block int hello;22    return hello;23}24 25// rewriting multiple __block decls on wintin same decl stmt.26void radar7547630() {27  __block int BI1, BI2;28 29  __block float FLOAT1, FT2, FFFFFFFF3,30   FFFXXX4;31 32  __block void (^B)(), (^BB)();33}34 35// rewriting multiple __block decls on wintin same decl stmt36// with initializers.37int  rdar7547630(const char *keybuf, const char *valuebuf) {38  __block int BI1 = 1, BI2 = 2;39 40  double __block BYREFVAR = 1.34, BYREFVAR_NO_INIT, BYREFVAR2 = 1.37;41 42  __block const char *keys = keybuf, *values = valuebuf, *novalues;43 44  return BI2;45}46 47typedef struct _z {48    int location;49    int length;50} z;51 52z w(int loc, int len);53 54@interface rdar1132698855@end56@implementation rdar11326988 57- (void)y:(int)options {58    __attribute__((__blocks__(byref))) z firstRange = w(1, 0);59    options &= ~(1 | 2);60}61@end62 63int Test18799145() { return ^(){return 0;}(); }64