From: Eric Botcazou <ebotca...@adacore.com> Date: Thu, 31 May 2012 15:06:41 +0200
>> + do { >> \ >> + UDItype __carry = 0; \ >> + __asm__ ("addcc\t%r5,%6,%1\n\t" \ >> + "add\t%r3,%4,%0\n\t" \ >> + "movcs\t%%xcc, 1, %2\n\t" \ >> + "add\t%0, %2, %0" >> \ >> >> : "=r" ((UDItype)(sh)), \ >> >> - "=&r" ((UDItype)(sl)) \ >> + "=&r" ((UDItype)(sl)), \ >> + "=&r" (__carry) \ >> >> : "%rJ" ((UDItype)(ah)), \ >> >> "rI" ((UDItype)(bh)), \ >> "%rJ" ((UDItype)(al)), \ >> - "rI" ((UDItype)(bl)) \ >> - __CLOBBER_CC) >> + "rI" ((UDItype)(bl)), \ >> + "2" (__carry) \ >> + __CLOBBER_CC); \ >> + } while (0) > > If __carry is used as both source and destination for %2, why not use a > single > operand with the + modifier? Makes sense, I'll make that change and test it, thanks Eric.