Bug#1118058: scipy: m68k fails: sparsetools/bsr.h unable to find a register to spill in class ‘ADDR_REGS’
Source: gcc-15
Version: 15.2.0-5
Severity: normal
Control: affects -1 src:scipy
m68k is failing to build scipy.
Both scipy 1.15.3 and 1.16.2 are affected
https://buildd.debian.org/status/fetch.php?pkg=scipy&arch=m68k&ver=1.15.3-1.1&stamp=1757118702&raw=0
https://buildd.debian.org/status/fetch.php?pkg=scipy&arch=m68k&ver=1.16.2-1exp2&stamp=1760305910&raw=0
The error is coming via cython, but cython itself has not changed,
suggesting the problem might be a regression in gcc-15.
And the error log does contain a GCC DUMP
For 1.16.2 the redacted error message is
[96/1448] cc -Iscipy/lib_fortranobject.a.p -Iscipy -I../scipy -I../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/_core/include -I../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/f2py/src -I/usr/include/python3.13 -I/usr/include/m68k-linux-gnu/python3.13 -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c17 -O3 -Wno-unused-but-set-variable -Wno-unused-function -Wno-conversion -Wno-misleading-indentation -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION -MD -MQ scipy/lib_fortranobject.a.p/.._.._.._.._usr_lib_m68k-linux-gnu_python3-numpy_numpy_f2py_src_fortranobject.c.o -MF scipy/lib_fortranobject.a.p/.._.._.._.._usr_lib_m68k-linux-gnu_python3-numpy_numpy_f2py_src_fortranobject.c.o.d -o scipy/lib_fortranobject.a.p/.._.._.._.._usr_lib_m68k-linux-gnu_python3-numpy_numpy_f2py_src_fortranobject.c.o -c ../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/f2py/src/fortranobject.c
...
[886/1448] c++ -Iscipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p -Iscipy/sparse/sparsetools -I../scipy/sparse/sparsetools -I../scipy/_build_utils/src -I../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/_core/include -I/usr/include/python3.13 -I/usr/include/m68k-linux-gnu/python3.13 -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c++17 -O3 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION -MD -MQ scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o -MF scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o.d -o scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o -c ../scipy/sparse/sparsetools/bsr.cxx
FAILED: scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o
c++ -Iscipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p -Iscipy/sparse/sparsetools -I../scipy/sparse/sparsetools -I../scipy/_build_utils/src -I../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/_core/include -I/usr/include/python3.13 -I/usr/include/m68k-linux-gnu/python3.13 -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c++17 -O3 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION -MD -MQ scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o -MF scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o.d -o scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o -c ../scipy/sparse/sparsetools/bsr.cxx
In file included from ../scipy/sparse/sparsetools/bsr.cxx:5:
../scipy/sparse/sparsetools/bsr.h: In function ‘void bsr_binop_bsr(I, I, I, I, const I*, const I*, const T*, const I*, const I*, const T*, I*, I*, T2*, const bin_op&) [with I = long long int; T = complex_wrapper<float, npy_cfloat>; T2 = complex_wrapper<float, npy_cfloat>; bin_op = std::multiplies<complex_wrapper<float, npy_cfloat> >]’:
../scipy/sparse/sparsetools/bsr.h:591:1: error: unable to find a register to spill in class ‘ADDR_REGS’
591 | }
| ^
../scipy/sparse/sparsetools/bsr.h:591:1: error: this is the insn:
(insn 848 847 3788 54 (set (mem:DI (plus:SI (mult:SI (subreg:SI (reg/v:DI 744 [orig:137 nnz ] [137]) 4)
(const_int 8 [0x8]))
(reg/v/f:SI 392 [ Cj ])) [2 *_176+0 S8 A16])
(mem:DI (post_inc:SI (reg:SI 6 %d6 [orig:63 ivtmp.100551 ] [63])) [2 MEM[(const long long int *)_814]+0 S8 A16])) "../scipy/sparse/sparsetools/bsr.h":512:25 75 {*m68k.md:1569}
(expr_list:REG_INC (reg:SI 6 %d6 [orig:63 ivtmp.100551 ] [63])
(nil)))
../scipy/sparse/sparsetools/bsr.h:591: confused by earlier errors, bailing out
Preprocessed source stored into /tmp/ccduDjZh.out file, please attach this to your bugreport.
=== BEGIN GCC DUMP ===
4017446: // Target: m68k-linux-gnu
4017446: // Configured with: ../src/configure -v --with-pkgversion='Debian 15.2.0-4' --with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs --enable-languages=c,ada,c++,fortran,objc,obj-c++,m2,algol68 --prefix=/usr --with-gcc-major-version-only --program-suffix=-15 --program-prefix=m68k-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-libssp --disable-libitm --disable-libsanitizer --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-werror --disable-multilib --enable-checking=release --build=m68k-linux-gnu --host=m68k-linux-gnu --target=m68k-linux-gnu
4017446: // Thread model: posix
4017446: // Supported LTO compression algorithms: zlib zstd
4017446: // gcc version 15.2.0 (Debian 15.2.0-4)
4017446: //
4017446: // In file included from ../scipy/sparse/sparsetools/bsr.cxx:5:
4017446: // ../scipy/sparse/sparsetools/bsr.h: In function ‘void bsr_binop_bsr(I, I, I, I, const I*, const I*, const T*, const I*, const I*, const T*, I*, I*, T2*, const bin_op&) [with I = long long int; T = complex_wrapper<float, npy_cfloat>; T2 = complex_wrapper<float, npy_cfloat>; bin_op = std::multiplies<complex_wrapper<float, npy_cfloat> >]’:
4017446: // ../scipy/sparse/sparsetools/bsr.h:591:1: error: unable to find a register to spill in class ‘ADDR_REGS’
4017446: // 591 | }
4017446: // | ^
4017446: // ../scipy/sparse/sparsetools/bsr.h:591:1: error: this is the insn:
4017446: // (insn 848 847 3788 54 (set (mem:DI (plus:SI (mult:SI (subreg:SI (reg/v:DI 744 [orig:137 nnz ] [137]) 4)
4017446: // (const_int 8 [0x8]))
4017446: // (reg/v/f:SI 392 [ Cj ])) [2 *_176+0 S8 A16])
4017446: // (mem:DI (post_inc:SI (reg:SI 6 %d6 [orig:63 ivtmp.100551 ] [63])) [2 MEM[(const long long int *)_814]+0 S8 A16])) "../scipy/sparse/sparsetools/bsr.h":512:25 75 {*m68k.md:1569}
4017446: // (expr_list:REG_INC (reg:SI 6 %d6 [orig:63 ivtmp.100551 ] [63])
4017446: // (nil)))
4017446: // ../scipy/sparse/sparsetools/bsr.h:591: confused by earlier errors, bailing out
4017446:
4017446: // /usr/libexec/gcc/m68k-linux-gnu/15/cc1plus -quiet -I scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p -I scipy/sparse/sparsetools -I ../scipy/sparse/sparsetools -I ../scipy/_build_utils/src -I ../../../../usr/lib/m68k-linux-gnu/python3-numpy/numpy/_core/include -I /usr/include/python3.13 -I /usr/include/m68k-linux-gnu/python3.13 -imultilib . -imultiarch m68k-linux-gnu -MD scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.d -MF scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o.d -MQ scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/bsr.cxx.o -D_GNU_SOURCE -D NDEBUG -D _LARGEFILE_SOURCE -D _FILE_OFFSET_BITS=64 -D _TIME_BITS=64 -D _FORTIFY_SOURCE=2 -D NPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION ../scipy/sparse/sparsetools/bsr.cxx -quiet -dumpdir scipy/sparse/sparsetools/_sparsetools.cpython-313-m68k-linux-gnu.so.p/ -dumpbase bsr.cxx.cxx -dumpbase-ext .cxx -mcpu=68020 -g -O3 -O2 -Wall -Winvalid-pch -Wformat=1 -Werror=format-security -Wdate-time -std=c++17 -fdiagnostics-color=always -fvisibility=hidden -fvisibility-inlines-hidden -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fPIC -o - -frandom-seed=0 -fdump-noaddr
Reply to: