https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121571
Bug ID: 121571 Summary: libgcc/config/i386/32/sfp-machine.h:7:3: error: 'asm' operand has impossible constraints or there are not enough registers Product: gcc Version: 15.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: thomas.petazz...@free-electrons.com Target Milestone: --- When building gcc (initial stage) for i686, but with --with-arch="skylake-avx512" *and* -Os part of CFLAGS_FOR_TARGET (causing libgcc to be built with -Os), the build of GCC 15.2.0 fails with: In file included from ./sfp-machine.h:14, from ../../../libgcc/soft-fp/soft-fp.h:38, from ../../../libgcc/soft-fp/addtf3.c:29: ../../../libgcc/soft-fp/addtf3.c: In function '__addtf3': ../../../libgcc/config/i386/32/sfp-machine.h:7:3: error: 'asm' operand has impossible constraints or there are not enough registers 7 | __asm__ ("add{l} {%11,%3|%3,%11}\n\t" \ | ^~~~~~~ ../../../libgcc/soft-fp/op-4.h:159:3: note: in expansion of macro '__FP_FRAC_ADD_4' 159 | __FP_FRAC_ADD_4 (R##_f[3], R##_f[2], R##_f[1], R##_f[0], \ | ^~~~~~~~~~~~~~~ ../../../libgcc/soft-fp/op-common.h:437:27: note: in expansion of macro '_FP_FRAC_ADD_4' 437 | _FP_FRAC_ADD_##wc (R, X, Y); \ | ^~~~~~~~~~~~~ ../../../libgcc/soft-fp/op-common.h:846:34: note: in expansion of macro '_FP_ADD_INTERNAL' 846 | #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL (fs, wc, R, X, Y, '+') | ^~~~~~~~~~~~~~~~ ../../../libgcc/soft-fp/quad.h:178:41: note: in expansion of macro '_FP_ADD' 178 | # define FP_ADD_Q(R, X, Y) _FP_ADD (Q, 4, R, X, Y) | ^~~~~~~ ../../../libgcc/soft-fp/addtf3.c:44:3: note: in expansion of macro 'FP_ADD_Q' 44 | FP_ADD_Q (R, A, B); | ^~~~~~~~ ../../../libgcc/config/i386/32/sfp-machine.h:37:3: error: 'asm' operand has impossible constraints or there are not enough registers 37 | __asm__ ("sub{l} {%11,%3|%3,%11}\n\t" \ | ^~~~~~~ ../../../libgcc/soft-fp/op-4.h:164:3: note: in expansion of macro '__FP_FRAC_SUB_4' 164 | __FP_FRAC_SUB_4 (R##_f[3], R##_f[2], R##_f[1], R##_f[0], \ | ^~~~~~~~~~~~~~~ ../../../libgcc/soft-fp/op-common.h:623:27: note: in expansion of macro '_FP_FRAC_SUB_4' 623 | _FP_FRAC_SUB_##wc (R, X, Y); \ | ^~~~~~~~~~~~~ ../../../libgcc/soft-fp/op-common.h:846:34: note: in expansion of macro '_FP_ADD_INTERNAL' 846 | #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL (fs, wc, R, X, Y, '+') | ^~~~~~~~~~~~~~~~ ../../../libgcc/soft-fp/quad.h:178:41: note: in expansion of macro '_FP_ADD' 178 | # define FP_ADD_Q(R, X, Y) _FP_ADD (Q, 4, R, X, Y) | ^~~~~~~ ../../../libgcc/soft-fp/addtf3.c:44:3: note: in expansion of macro 'FP_ADD_Q' 44 | FP_ADD_Q (R, A, B); | ^~~~~~~~ make[2]: *** [../../../libgcc/static-object.mk:17: addtf3.o] Error 1 Full log available at https://autobuild.buildroot.org/results/e3148c3ad81e6f597bb192241b5ec89a18f53061/build-end.log In the same conditions, GCC 14.3.0 builds just fine, so there is a regression between GCC 14.x and GCC 15.x on this topic.