[llvmlinux] Wrong types in inline assembly?

Tim Northover t.p.northover at gmail.com
Fri Sep 27 10:36:30 UTC 2013


> What file is generating this?

There's at least one block in include/linux/math64.h in the function
__iter_div_u64_rem:

        while (dividend >= divisor) {
                /* The following asm() prevents the compiler from
                   optimising this loop into a modulo operation.  */
                asm("" : "+rm"(dividend));

                dividend -= divisor;
                ret++;
        }

I can sympathise with the desire, but there's almost certainly a
better way to do that. Yuck.

Tim.


More information about the LLVMLinux mailing list