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: [email protected]
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.