https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63709
Bug ID: 63709 Summary: msp430 Y constraint generates unacceptable constant in large mode Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pab at pabigot dot com Building trunk gcc at SVN 217005 produces the following from make all-target: # If this is the top-level multilib, build all the other # multilibs. /tmp/gcc/./gcc/xgcc -B/tmp/gcc/./gcc/ -B/usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/bin/ -B/usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/lib/ -isystem /usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/include -isystem /usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/sys-include -g -O2 -mlarge -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -Os -ffunction-sections -fdata-sections -mhwmult=none -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -Os -ffunction-sections -fdata-sections -mhwmult=none -I. -I. -I../../.././gcc -I/opt/gcc/libgcc -I/opt/gcc/libgcc/. -I/opt/gcc/libgcc/../gcc -I/opt/gcc/libgcc/../include -DHAVE_CC_TLS -DUSE_EMUTLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c /opt/gcc/libgcc/unwind-dw2.c -fvisibility=hidden -DHIDE_EXPORTS /tmp/ccdnPFDw.s: Assembler messages: /tmp/ccdnPFDw.s:3439: Error: value 0xfff80000 out of extended range. make[3]: *** [unwind-dw2.o] Error 1 The offending generated code is: .LBB296: .loc 2 208 0 CMP.B #0, 148(R5) { JEQ .L400 .loc 2 209 0 BISX.A #-524288, 96(R10) .LVL485: BRA #.L379 .LVL486: .L400: .loc 2 211 0 ANDX.A #524287, 96(R10) .LVL487: Either gcc needs to truncate values to fit within the 20-bit/16-bit limits or the check in binutils needs to be relaxed.