[Bug target/63709] New: msp430 Y constraint generates unacceptable constant in large mode

pab at pabigot dot com gcc-bugzilla@gcc.gnu.org
Sat Nov 1 23:02:00 GMT 2014


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.



More information about the Gcc-bugs mailing list