https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69899
David <gccbugzilla at limegreensocks dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gccbugzilla@limegreensocks. | |com --- Comment #2 from David <gccbugzilla at limegreensocks dot com> --- To confirm the ice and to provide more details: double a; fn1(){ asm("" : "=t"(a) : "0u"(0)); } // replace_reg at reg-stack.c:687 fn2(){ asm("" : "=t"(a) : "0u"(0.0)); } // No ICE fn3(){ asm("" : "=t"(a) : "u"(0.0)); } // change_stack at reg-stack.c:2522 fn1 is the OP's code. Changing the input to a float (0.0 vs 0) resolves the first ICE, but removing the "0" from the input constraint throws another.