[cfe-dev] clang defines __weak as if -fobjc-gc were specified
jahanian
fjahanian at apple.com
Wed Jun 5 11:55:59 PDT 2013
I thought I sent out this email earlier. But here it is again.
__weak is always defined for use in blocks. It is unfortunate though that it is def’ed to
objc_gc(weak) though. But for the purpose of use, it doesn’t really matter.
- Fariborz
On Jun 5, 2013, at 10:57 AM, Frank Rehwinkel <frankrehwinkel at gmail.com> wrote:
> Totally agree. But I'm just coming to the GNUstep project. And while it used to be supported for Darwin - before clang was an option, it seems an unsupported platform option these days - ironic really. So I'm a little bit on my own on this one and just trying to make it compile with the minimum of changes to see if it will even work again.
>
> Just had another look at the code. Maybe __strong and __weak can be undef'ed when the platform is Darwin/clang.
>
> For that matter, now I' curious what is different about this build on FreeBSD, where GNUstep is actively maintained and clang is used. I know they wouldn't have left these warnings as part of their build.
>
> Thanks.
>
>
> On Wed, Jun 5, 2013 at 1:09 PM, John McCall <rjmccall at apple.com> wrote:
> On Jun 5, 2013, at 10:06 AM, John McCall <rjmccall at apple.com> wrote:
>> On Jun 5, 2013, at 10:04 AM, Frank Rehwinkel <frankrehwinkel at gmail.com> wrote:
>>> Thanks for asking. I just want to make sure I understand your statement and question. On Darwin, you've always had __weak defined as __attribute__((objc_gc(weak))), even when __strong is defined as <empty>?
>>>
>>> If it is intentional, then I would say there is no specific problem. We can put a comment into the header file for GNUstep to explain why __weak is being undef'ed before it is defined as <empty>. (Without the undef, the build generates seemingly hundreds of warnings, obscuring other warnings that might be more meaningful.)
>>>
>>> If it is unintentional, then a change to clang would obviate the additional code in the GNUstep header and save a few seconds every time someone went to read through the logic of those __strong and __weak macro definitions.
>>
>> Why don't you just not #define __weak and __strong on Darwin?
>
> Or, for that matter, if they're already defined?
>
> Headers that randomly change macro state are somewhat evil; among other things, they tend to introduce nasty order-of-inclusion bugs.
>
> John.
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130605/c69fa040/attachment.html>
More information about the cfe-dev
mailing list