https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120011
Bug ID: 120011
Summary: [15 Regression] Impossible asm constraints in 32 bit
libgcc when compiling with -march=x86-64-v4
Product: gcc
Version: 15.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: stefan.kneifel at bluewin dot ch
Target Milestone: ---
Regression 15.1.1 against 15.0:
When compiling gcc itself using -march=x86-64-v4, it stops at compiling the 32
bit version of libgcc with the following error:
'asm' operand has impossible constraints or there are not enough registers
creduc'ing the regression gives the following code snippet:
--------------------------------------------------------------------------
long a, b, c, d;
void f()
{
long e[2];
if (e[0] | e[1])
{
__asm__("add %7,%3; adc %6,%2; adc %5,%1; adc %4,%0"
: "=r"(d), "=&r"(c), "=&r"(b), "=&r"(a)
: "0"(0L), "g"(e), "g"(e[1]), "g"(e[0]));
}
}
--------------------------------------------------------------------------
Compiling this with gcc 15.0 works with -march=x86-64-v4 -m32, gcc 15.1.1 does
not work and gives the mentioned error. 64 bit compiling works fine with both
versions.