[LLVMdev] [llvm-commits] [PATCH] BlocksRuntime updates for Linux

Edward O'Callaghan eocallaghan at auroraux.org
Tue Sep 22 20:06:11 PDT 2009


No, As it worked fine before.

I can't see the #if that goes with +#elif defined(__WIN32__) as you
removed -#if TARGET_OS_MAC.
Please go over your #if / #endif blocks and trail the #endif with a
comment. I am willing to bet there is a problem there.

Thanks for your time,
Edward.

2009/9/23 Shantonu Sen <ssen at apple.com>:
> Sounds like your system compiler doesn't support gcc-style builtin atomics.
> Please use a different compiler?
>
> Shantonu
>
> Sent from my MacBook
>
> On Sep 22, 2009, at 7:54 PM, Edward O'Callaghan wrote:
>
>> Breaks Builds on Solaris and AuroraUX with:
>>
>> bash-3.2$ make
>> Scanning dependencies of target BlocksRuntime
>> [  1%] Building C object
>> BlocksRuntime/CMakeFiles/BlocksRuntime.dir/runtime.c.o
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:77:2:
>> error: #error unknown atomic compare-and-swap primitive
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:
>> In function 'latching_incr_int':
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:118:
>> warning: implicit declaration of function 'OSAtomicCompareAndSwapInt'
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:
>> In function '_Block_dump':
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:664:
>> warning: format '%#lx' expects type 'long unsigned int', but argument
>> 3 has type 'unsigned int'
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:672:
>> warning: format '%#lx' expects type 'long unsigned int', but argument
>> 3 has type 'unsigned int'
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:673:
>> warning: format '%#lx' expects type 'long unsigned int', but argument
>> 3 has type 'unsigned int'
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:
>> In function '_Block_byref_dump':
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:688:
>> warning: format '%#lx' expects type 'long unsigned int', but argument
>> 3 has type 'unsigned int'
>>
>> /export/home/edward/lab/llvm/build/compiler-rt/BlocksRuntime/runtime.c:689:
>> warning: format '%#lx' expects type 'long unsigned int', but argument
>> 3 has type 'unsigned int'
>>
>> Please check these.
>>
>> Thank you,
>> Edward O'Callaghan.
>>
>> 2009/9/22 Chris Lattner <clattner at apple.com>:
>>>
>>> On Sep 21, 2009, at 9:15 AM, Shantonu Sen wrote:
>>>
>>> [forwarding to llvm-commits, which is where i meant to send it the first
>>> time]
>>>
>>> The source changes seem fine to me, and I don't have an opinion about the
>>> build system changes - I suggest committing them and seeing if anyone
>>> screams :)
>>> Thanks Shantonu,
>>> -Chris
>>>
>>> Ping?
>>> Shantonu Sen
>>> ssen at apple.com
>>> Sent from my Mac Pro
>>> Begin forwarded message:
>>>
>>> From: Shantonu Sen <ssen at apple.com>
>>> Date: September 18, 2009 11:14:13 AM PDT
>>> To: LLVM Developers Mailing List <llvmdev at cs.uiuc.edu>
>>> Subject: [LLVMdev] [PATCH] BlocksRuntime updates for Linux
>>>
>>> The attached diff cleans up the BlocksRuntime/ directory of compiler-rt
>>> for
>>> better portability, eliminates compiler warnings, and adds support to the
>>> cmake build to install the results.
>>>
>>> More specifically, the changes:
>>> 1) Remove cmake-specific #define usage from the exported
>>> Block.h/Block_private.h headers, since clients won't know what to set.
>>> These
>>> are moved into runtime.c as appropriate
>>> 2) Use cmake checks for CAS builtins, instead of guessing based on GCC
>>> #defines (which aren't set by clang and llvm-gcc anyway)
>>> 3) "#pragma mark" isn't supported by FSF gcc, so "#if 0" it out. It
>>> should
>>> still show up in IDEs that support it
>>> 4) Fix some compiler warnings. GCC 4.3.3 seems super strict about %p.
>>> function pointers can't be cast to void * either.
>>> 5) Avoid a warning for apple_versioning.c that "ISO C does not allow
>>> empty
>>> files"
>>>
>>> Tested on Ubuntu Linux 9.04 with clang and llvm-gcc and -fblocks to
>>> define
>>> and copy some blocks (and invoke them, obviously). Also tested on Mac OS
>>> X
>>> 10.6 and linking against -lBlocksRuntime ahead of -lSystem.
>>>
>>> <blocks-linux.diff>
>>>
>>> Shantonu Sen
>>> ssen at apple.com
>>>
>>> Sent from my Mac Pro
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>
>>>
>>
>>
>>
>> --
>> --
>> Edward O'Callaghan
>> http://www.auroraux.org/
>> eocallaghan at auroraux dot org
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>



-- 
-- 
Edward O'Callaghan
http://www.auroraux.org/
eocallaghan at auroraux dot org




More information about the llvm-dev mailing list