[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED Target Milestone|--- |7.0 --- Comment #10 from Eric Botcazou --- Fixed in GCC 7 and later.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Gallager changed: What|Removed |Added CC||egallager at gcc dot gnu.org --- Comment #9 from Eric Gallager --- (In reply to Eric Botcazou from comment #8) > > It's probably too late to implement this in reload though. > > So an incentive for the switch to LRA if one was needed. Doesn't sparc default to LRA now?
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added Status|ASSIGNED|NEW Assignee|ebotcazou at gcc dot gnu.org |unassigned at gcc dot gnu.org
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added CC||davem at gcc dot gnu.org --- Comment #8 from Eric Botcazou --- > It's probably too late to implement this in reload though. So an incentive for the switch to LRA if one was needed.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 --- Comment #7 from Eric Botcazou --- (insn 1237 1236 1238 9 (set (reg:DF 32 %f0) (float:DF (reg:SI 2027 [ MEM[base: in_140, index: _139, offset: 0B]+-3 ]))) pr69038.C:647 155 {floatsidf2} (expr_list:REG_DEAD (reg:SI 2027 [ MEM[base: in_140, index: _139, offset: 0B]+-3 ]) (nil))) Spilling for insn 1237. reload failure for reload 0 Reloads for insn # 1237 Reload 0: reload_in (SI) = (reg:SI 2027 [ MEM[base: in_140, index: _139, offset: 0B]+-3 ]) FP_REGS, RELOAD_FOR_INPUT (opnum = 1) reload_in_reg: (reg:SI 2027 [ MEM[base: in_140, index: _139, offset: 0B]+-3 ]) But AFAICS %f0 could be used as reload register here thanks to the REG_DEAD note... It's probably too late to implement this in reload though.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 --- Comment #6 from Eric Botcazou --- Ugh. The nohalo_subdivision function has 37 parameters, among which 21 are double's so this really stretches the register allocator...
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 --- Comment #5 from Eric Botcazou --- Created attachment 37142 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37142=edit Reduced testcase To be compiled with -m64 -mcpu=ultrasparc -O.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added Status|WAITING |NEW --- Comment #3 from Eric Botcazou --- Thanks, I can reproduce now, -mcpu=ultrasparc is necessary here.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ebotcazou at gcc dot gnu.org --- Comment #4 from Eric Botcazou --- Investigating.
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 Eric Botcazou changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2015-12-25 CC||ebotcazou at gcc dot gnu.org Summary|sparc64 compilation fails |compilation error: unable |with error: unable to find |to find a register to spill |a register to spill in |in class 'FP_REGS' |class 'FP_REGS' | Ever confirmed|0 |1 --- Comment #1 from Eric Botcazou --- Can you post the output of 'gcc -v' ?
[Bug target/69038] compilation error: unable to find a register to spill in class 'FP_REGS'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038 --- Comment #2 from Thomas Petazzoni--- Sure, here it is: Using built-in specs. COLLECT_GCC=/home/test/buildroot/output/host/usr/bin/sparc64-buildroot-linux-gnu-g++.br_real Target: sparc64-buildroot-linux-gnu Configured with: ./configure --prefix=/home/test/buildroot/output/host/usr --sysconfdir=/home/test/buildroot/output/host/etc --enable-static --target=sparc64-b uildroot-linux-gnu --with-sysroot=/home/test/buildroot/output/host/usr/sparc64-buildroot-linux-gnu/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/home/test/buildroot/output/host/usr --with-mpfr=/home/test/buildroot/output/host/usr --with-pkgversion='Buildroot 2016.02-git-00574-g4ef0ef3-dirty' --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath --disable-libsanitizer --enable-tls --disable-libmudflap --enable-threads --with-mpc=/home/test/buildroot/output/host/usr --without-isl --without-cloog --disable-decimal-float --with-cpu=ultrasparc --enable-languages=c,c++ --with-build-time-tools=/home/test/buildroot/output/host/usr/sparc64-buildroot-linux-gnu/bin --enable-shared --disable-libgomp Thread model: posix gcc version 5.3.0 (Buildroot 2016.02-git-00574-g4ef0ef3-dirty) COLLECT_GCC_OPTIONS='-v' '-c' '-Os' '-shared-libgcc' '-mcpu=ultrasparc' /home/test/buildroot/output/host/usr/libexec/gcc/sparc64-buildroot-linux-gnu/5.3.0/cc1plus -quiet -v -isysroot /home/test/buildroot/output/host/usr/sparc64-buildroot-linux-gnu/sysroot -D_GNU_SOURCE -D__sparc_v9__ -D__arch64__ .libs/nohalo.c -mvis -quiet -dumpbase nohalo.c -mcpu=ultrasparc -auxbase nohalo -Os -version -o /tmp/ccHnYVn9.s GNU C++ (Buildroot 2016.02-git-00574-g4ef0ef3-dirty) version 5.3.0 (sparc64-buildroot-linux-gnu) compiled by GNU C version 4.4.5, GMP version 6.1.0, MPFR version 3.1.3, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/home/test/buildroot/output/host/usr/sparc64-buildroot-linux-gnu/sysroot/usr/local/include" #include "..." search starts here: #include <...> search starts here: /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/../../../../sparc64-buildroot-linux-gnu/include/c++/5.3.0 /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/../../../../sparc64-buildroot-linux-gnu/include/c++/5.3.0/sparc64-buildroot-linux-gnu /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/../../../../sparc64-buildroot-linux-gnu/include/c++/5.3.0/backward /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/include /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/include-fixed /home/test/buildroot/output/host/usr/lib/gcc/sparc64-buildroot-linux-gnu/5.3.0/../../../../sparc64-buildroot-linux-gnu/include /home/test/buildroot/output/host/usr/sparc64-buildroot-linux-gnu/sysroot/usr/include End of search list. GNU C++ (Buildroot 2016.02-git-00574-g4ef0ef3-dirty) version 5.3.0 (sparc64-buildroot-linux-gnu) compiled by GNU C version 4.4.5, GMP version 6.1.0, MPFR version 3.1.3, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: f99a20b2afe7fa95fb8df4625860a9b3 nohalo.cpp: In function 'void vips_interpolate_nohalo_interpolate(VipsInterpolate*, void*, VipsRegion*, double, double)': nohalo.cpp:1571:1: error: unable to find a register to spill in class 'FP_REGS' } ^ nohalo.cpp:1571:1: error: this is the insn: (insn 555 554 3791 8 (set (reg:DF 32 %f0) (float:DF (reg:SI 1852 [ MEM[base: p_139, index: _138, offset: 0B]+-3 ]))) nohalo.cpp:1463 155 {floatsidf2} (expr_list:REG_DEAD (reg:SI 1852 [ MEM[base: p_139, index: _138, offset: 0B]+-3 ]) (nil))) nohalo.cpp:1571: confused by earlier errors, bailing out