Define __weak attribute for objective-c pointers in

win32 targets. Fixes radar 7530235. Daniel please review.

llvm-svn: 93246
This commit is contained in:
Fariborz Jahanian 2010-01-12 18:33:57 +00:00
parent 08557ef5f4
commit 42c06998ea
2 changed files with 17 additions and 0 deletions

View File

@ -994,6 +994,10 @@ public:
DefineStd(Builder, "WIN32", Opts);
DefineStd(Builder, "WINNT", Opts);
Builder.defineMacro("_X86_");
if (Opts.ObjC1)
// __weak is always defined, for use in blocks and with objc pointers,
// even for i686-pc-win32 targets.
Builder.defineMacro("__weak", "__attribute__((objc_gc(weak)))");
}
};
} // end anonymous namespace

View File

@ -0,0 +1,13 @@
// RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -fblocks -Dnil=0 -rewrite-objc -o - %s
int main() {
__weak __block id foo = nil;
__block id foo2 = nil;
id foo3 = nil;
void (^myblock)() = ^{
foo = nil;
foo2 = nil;
[foo3 bar];
id foo4 = foo3;
};
}