On Wed, 2011-05-18 at 15:25 +0200, Svante Signell wrote: > On Wed, 2011-05-18 at 13:35 +0200, Svante Signell wrote: > > On Wed, 2011-05-18 at 12:18 +0200, Thomas Schwinge wrote: > ... > > I have now completely disabled the wrapper, and the build problems > > remain. > > And building with -O0 does not work either.
Looks like at least -O1 is needed: It builds OK at that level, but still not at -O2! A question: I can avoid the warnings below by doing the following asm change. I saw it somewhere on the web that people recommended this type of change to enable the inline code go into a register. Does it make sense (I don't remember much of asm) asm("xorl %0,%0\n0:\tbsfw %1,%w0\n\tbtr %0,%1\n\tjnc 0b" - : "=&r" (rv), "=m" (*field) : "1" (*field)); + : "=&r" (rv), "=m" (*field) : "m" (*field)); ../linux/src/drivers/scsi/ultrastor.c: In function ‘find_and_clear_bit_16’: ../linux/src/drivers/scsi/ultrastor.c:308:3: warning: matching constraint does not allow a register [enabled by default] (... same several times ...) -> The error below goes away with -O1 or higher! -> ../linux/src/drivers/scsi/ultrastor.c:308:3: error: inconsistent operand constraints in an ‘asm’ Is this OK? There is also a similar case in the glibc code.