------- Comment #5 from andi-gcc at firstfloor dot org 2010-06-09 11:08 ------- Hmm yes there was another temporary and a inline inbetween
unsigned inlinefunc(void) { unsigned var; asm(" ... " : "=r" (var)); return var; } #define macro(x,y) { unsigned var = inlinefunc(); x = var; y = var >> 16; }; caller macro(x,y) y is just a dummy -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44478