https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95859
--- Comment #4 from Tobias Schlüter <tobi at gcc dot gnu.org> ---
This is a regression. 9.3 works, producing this assembly with -O2 -m32:
func34(m34):
fld DWORD PTR [esp+8]
mov eax, DWORD PTR [esp+4]
fstp QWORD PTR [eax]
fld DWORD PTR [esp+24]
fstp QWORD PTR [eax+8]
fld DWORD PTR [esp+40]
fstp QWORD PTR [eax+16]
fld DWORD PTR [esp+12]
fstp QWORD PTR [eax+24]
fld DWORD PTR [esp+28]
fstp QWORD PTR [eax+32]
fld DWORD PTR [esp+44]
fstp QWORD PTR [eax+40]
fld DWORD PTR [esp+16]
fstp QWORD PTR [eax+48]
fld DWORD PTR [esp+32]
fstp QWORD PTR [eax+56]
fld DWORD PTR [esp+48]
fstp QWORD PTR [eax+64]
fld DWORD PTR [esp+20]
fstp QWORD PTR [eax+72]
fld DWORD PTR [esp+36]
fstp QWORD PTR [eax+80]
fld DWORD PTR [esp+52]
fstp QWORD PTR [eax+88]
ret 4
I've also thrown some other simple Eigen codes at the compiler, and 10.1 and
trunk consistently keep the asserts in place.