[LLVMdev] FD_ZERO unsupported inline asm on 64 bit
Cristian Zamfir
cristian.zamfir at epfl.ch
Tue Feb 16 07:13:52 PST 2010
Thanks Duncan,
It seems the bug has been reopened. After reading the comments related to the bug report, it was not clear if this is fixed in llvm-gcc, or just in clang.
Thanks,
Cristi
On Feb 16, 2010, at 3:44 PM, Duncan Sands wrote:
> Hi Cristian, this is (part of) bug 3373, see
> http://llvm.org/bugs/show_bug.cgi?id=3373
>
>> FD_ZERO(&rfds); //this is the error line
>
> ...
>
>> # define __FD_ZERO(fdsp) \
>> do { \
>> int __d0, __d1; \
>> __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
>> : "=c" (__d0), "=D" (__d1) \
>> : "a" (0), "0" (sizeof (fd_set) \
>> / sizeof (__fd_mask)), \
>> "1" (&__FDS_BITS (fdsp)[0]) \
>> : "memory"); \
>> } while (0)
>
> That said, this is an odd way to implement FD_ZERO. The crazy asm is equivalent
> to a simple memset...
>
> Ciao,
>
> Duncan.
>
> PS: The underlying problem here is probably that __d0 and __d1 are declared as
> int, which is only 32 bits in size, while the asm is expecting 64 bits.
More information about the llvm-dev
mailing list