http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54358
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-08-23 11:54:12 UTC --- Btw, I think this is invalid asm: int ICE_func ( void) { void *returnaddr = &&retaddr; /* need the label address, works with * function address */ __asm__("mov %0,(%%esp)\n" : /* no outputs */ : "p" (returnaddr) /* ICE only with p. r and g are working */ : /* none modified */ ); retaddr: return 0; } 'p' is not a correct constraint for mov.