[Bug other/69038] New: sparc64 compilation fails with error: unable to find a register to spill in class 'FP_REGS'

thomas.petazzoni@free-electrons.com gcc-bugzilla@gcc.gnu.org
Thu Dec 24 11:32:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038

            Bug ID: 69038
           Summary: sparc64 compilation fails with error: unable to find a
                    register to spill in class 'FP_REGS'
           Product: gcc
           Version: 5.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: thomas.petazzoni@free-electrons.com
  Target Milestone: ---

Created attachment 37123
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37123&action=edit
Preprocessed source file

When building the libvips library with sparc64 gcc 5.3.0, the build fails with:

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)))

This build failure happens at -O1, -O2, -Os, but not at -O0:

test@build:~/buildroot/output/build/libvips-7.42.2/libvips/resample$
/home/test/buildroot/output/host/usr/bin/sparc64-buildroot-linux-gnu-g++ -c -O0
 .libs/nohalo.c
test@build:~/buildroot/output/build/libvips-7.42.2/libvips/resample$
/home/test/buildroot/output/host/usr/bin/sparc64-buildroot-linux-gnu-g++ -c -O1
 .libs/nohalo.c
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 721 720 722 8 (set (reg:DF 32 %f0)
        (float:DF (reg:SI 2281 [ MEM[base: p_139, index: _138, offset: 0B]+-3
]))) nohalo.cpp:1463 155 {floatsidf2}
     (expr_list:REG_DEAD (reg:SI 2281 [ MEM[base: p_139, index: _138, offset:
0B]+-3 ])
        (nil)))
nohalo.cpp:1571: confused by earlier errors, bailing out
test@build:~/buildroot/output/build/libvips-7.42.2/libvips/resample$
/home/test/buildroot/output/host/usr/bin/sparc64-buildroot-linux-gnu-g++ -c -O2
 .libs/nohalo.c
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 837 773 775 8 (set (reg:DF 32 %f0)
        (float:DF (reg:SI 2333 [ MEM[base: p_139, index: _5583, offset: 0B]+-3
]))) nohalo.cpp:1463 155 {floatsidf2}
     (expr_list:REG_DEAD (reg:SI 2333 [ MEM[base: p_139, index: _5583, offset:
0B]+-3 ])
        (nil)))
nohalo.cpp:1571: confused by earlier errors, bailing out
test@build:~/buildroot/output/build/libvips-7.42.2/libvips/resample$
/home/test/buildroot/output/host/usr/bin/sparc64-buildroot-linux-gnu-g++ -c -Os
 .libs/nohalo.c
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

In attachment, the pre-processed source file that allows to reproduce the
issue.


More information about the Gcc-bugs mailing list