Bug 37987 - iwmmxt: insn does not satisfy its constraints on (int64_t)
Summary: iwmmxt: insn does not satisfy its constraints on (int64_t)
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.2.4
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2008-11-01 15:11 UTC by Stanislav Brabec
Modified: 2024-03-15 21:49 UTC (History)
4 users (show)

See Also:
Host: x86_64-suse-linux
Target: arm-angstrom-linux-gnueabi
Build: iwmmxt-angstrom-linux-gnueabi
Known to work:
Known to fail:
Last reconfirmed: 2009-12-09 17:10:46


Attachments
svq1enc_e.c (34.83 KB, text/plain)
2008-11-01 15:12 UTC, Stanislav Brabec
Details
Preprocessed libc_fatal.c (34.82 KB, text/plain)
2009-07-02 02:05 UTC, ccg.ijsj
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Stanislav Brabec 2008-11-01 15:11:51 UTC
When compiling attached file with "-march=iwmmxt -mtune=iwmmxt -O -fno-omit-frame-pointer", then following error appears on line "score= sqr - ((diff*(int64_t)diff)>>(level+3))":

svq1enc.c: In function 'encode_block':
svq1enc.c:265: error: insn does not satisfy its constraints:
(insn 1636 1634 334 22 (set (reg:SI 43 wcgr0)
        (mem/c:SI (plus:SI (reg/f:SI 11 fp)
                (const_int -3888 [0xfffffffffffff0d0])) [0 D.8214+0 S4 A32])) 407 {*iwmmxt_movsi_insn} (nil)
    (nil))
svq1enc.c:265: internal compiler error: in reload_cse_simplify_operands, at postreload.c:392

When compiling without -fno-omit-frame-pointer, everything works correctly.

Using built-in specs.
Target: arm-angstrom-linux-gnueabi
Configured with: /OE/build/tmp/work/armv5te-angstrom-linux-gnueabi/gcc-cross-4.2.4-r3/gcc-4.2.4/configure --build=x86_64-linux --host=x86_64-linux --target=arm-angstrom-linux-gnueabi --prefix=/OE/build/tmp/cross/armv5te --exec_prefix=/OE/build/tmp/cross/armv5te --bindir=/OE/build/tmp/cross/armv5te/bin --sbindir=/OE/build/tmp/cross/armv5te/bin --libexecdir=/OE/build/tmp/cross/armv5te/libexec --datadir=/OE/build/tmp/cross/armv5te/share --sysconfdir=/OE/build/tmp/cross/armv5te/etc --sharedstatedir=/OE/build/tmp/cross/armv5te/com --localstatedir=/OE/build/tmp/cross/armv5te/var --libdir=/OE/build/tmp/cross/armv5te/lib --includedir=/OE/build/tmp/cross/armv5te/include --oldincludedir=/OE/build/tmp/cross/armv5te/include --infodir=/OE/build/tmp/cross/armv5te/share/info --mandir=/OE/build/tmp/cross/armv5te/share/man --with-gnu-ld --enable-shared --enable-target-optspace --enable-languages=c,c++,objc,fortran --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-angstrom-linux-gnueabi- --enable-libssp --disable-bootstrap --enable-libgomp --disable-libmudflap --with-float=soft --with-local-prefix=/OE/build/tmp/staging/armv5te-angstrom-linux-gnueabi/usr --with-gxx-include-dir=/OE/build/tmp/staging/armv5te-angstrom-linux-gnueabi//usr/include/c++ --with-sysroot=/OE/build/tmp/staging/armv5te-angstrom-linux-gnueabi --with-build-sysroot=/OE/build/tmp/staging/armv5te-angstrom-linux-gnueabi --disable-libunwind-exceptions --with-mpfr=/OE/build/tmp/staging/x86_64-linux/usr --enable-__cxa_atexit
Thread model: posix
gcc version 4.2.4
Comment 1 Stanislav Brabec 2008-11-01 15:12:46 UTC
Created attachment 16606 [details]
svq1enc_e.c
Comment 2 Ramana Radhakrishnan 2009-05-13 10:14:43 UTC
Can you check this with a later compiler. 4.2.x is closed. Works for me with current trunk.
Comment 3 ccg.ijsj 2009-07-01 06:41:44 UTC
(In reply to comment #2)
> Can you check this with a later compiler. 4.2.x is closed. Works for me with
> current trunk.
> 
Just encountered similar problem while cross compiling gcc 4.4.0 with glibc 2.9.
(Using crosstool-NG).

The error messages:

[ALL  ]    arm-iwmmxt-linux-gnueabi-gcc     ../sysdeps/unix/sysv/linux/libc_fatal.c -c -std=gnu99 -fgnu89-inline -O -Wall -Winline -Wwrite-strings -finline-limit=10000 -fmerge-all-constants -mabi=aapcs-linux -march=iwmmxt -mlittle-endian -msoft-float -Wstrict-prototypes      -I../include -I/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio -I/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl -I../ports/sysdeps/unix/sysv/linux/arm/eabi -I../ports/sysdeps/unix/sysv/linux/arm/nptl -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../ports/sysdeps/arm/eabi -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I../ports  -I.. -I../libio -I. -nostdinc -isystem /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/gcc-core-shared/lib/gcc/arm-iwmmxt-linux-gnueabi/4.4.0/include -isystem /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/gcc-core-shared/lib/gcc/arm-iwmmxt-linux-gnueabi/4.4.0/include-fixed -isystem /home/jsji/x-tools/arm-iwmmxt-linux-gnueabi/arm-iwmmxt-linux-gnueabi//sys-root/usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h        -D_IO_MTSAFE_IO -o /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o -MD -MP -MF /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o.dt -MT /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o 
[ALL  ]    ../sysdeps/unix/sysv/linux/libc_fatal.c: In function '__libc_message':
[ERROR]    ../sysdeps/unix/sysv/linux/libc_fatal.c:172: error: insn does not satisfy its constraints:
[ALL  ]    (insn 459 154 155 19 ../sysdeps/unix/sysv/linux/libc_fatal.c:106 (set (reg:SI 43 wcgr0)
[ALL  ]            (mem/c:SI (plus:SI (reg/f:SI 11 fp)
[ALL  ]                    (const_int -1324 [0xfffffffffffffad4])) [0 %sfp+-1292 S4 A32])) 441 {*iwmmxt_movsi_insn} (nil))
[ERROR]    ../sysdeps/unix/sysv/linux/libc_fatal.c:172: internal compiler error: in reload_cse_simplify_operands, at postreload.c:396
[ALL  ]    Please submit a full bug report,
[ALL  ]    with preprocessed source if appropriate.
[ALL  ]    See <http://gcc.gnu.org/bugs.html> for instructions.
[ERROR]    make[3]: *** [/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o] Error 1
[ALL  ]    make[3]: Leaving directory `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/src/glibc-cvs-2.9/libio'
[ERROR]    make[2]: *** [libio/subdir_lib] Error 2
[ALL  ]    make[2]: Leaving directory `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/src/glibc-cvs-2.9'
[ERROR]    make[1]: *** [all] Error 2
[ALL  ]    make[1]: Leaving directory `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc'
Comment 4 Ramana Radhakrishnan 2009-07-01 08:39:10 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > Can you check this with a later compiler. 4.2.x is closed. Works for me with
> > current trunk.
> > 
> Just encountered similar problem while cross compiling gcc 4.4.0 with glibc
> 2.9.
> (Using crosstool-NG).> 
> The error messages:
> 
> [ALL  ]    arm-iwmmxt-linux-gnueabi-gcc    
> ../sysdeps/unix/sysv/linux/libc_fatal.c -c -std=gnu99 -fgnu89-inline -O -Wall
> -Winline -Wwrite-strings -finline-limit=10000 -fmerge-all-constants
> -mabi=aapcs-linux -march=iwmmxt -mlittle-endian -msoft-float
> -Wstrict-prototypes      -I../include
> -I/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio
> -I/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc
> -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl
> -I../ports/sysdeps/unix/sysv/linux/arm/eabi
> -I../ports/sysdeps/unix/sysv/linux/arm/nptl
> -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux
> -I../nptl/sysdeps/pthread -I../sysdeps/pthread
> -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux
> -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman
> -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv
> -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix
> -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix
> -I../ports/sysdeps/arm/eabi -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm
> -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32
> -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf
> -I../sysdeps/generic -I../nptl -I../ports  -I.. -I../libio -I. -nostdinc
> -isystem
> /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/gcc-core-shared/lib/gcc/arm-iwmmxt-linux-gnueabi/4.4.0/include
> -isystem
> /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/gcc-core-shared/lib/gcc/arm-iwmmxt-linux-gnueabi/4.4.0/include-fixed
> -isystem
> /home/jsji/x-tools/arm-iwmmxt-linux-gnueabi/arm-iwmmxt-linux-gnueabi//sys-root/usr/include
> -D_LIBC_REENTRANT -include ../include/libc-symbols.h        -D_IO_MTSAFE_IO -o
> /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o
> -MD -MP -MF
> /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o.dt
> -MT
> /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o 
> [ALL  ]    ../sysdeps/unix/sysv/linux/libc_fatal.c: In function
> '__libc_message':
> [ERROR]    ../sysdeps/unix/sysv/linux/libc_fatal.c:172: error: insn does not
> satisfy its constraints:
> [ALL  ]    (insn 459 154 155 19 ../sysdeps/unix/sysv/linux/libc_fatal.c:106
> (set (reg:SI 43 wcgr0)
> [ALL  ]            (mem/c:SI (plus:SI (reg/f:SI 11 fp)
> [ALL  ]                    (const_int -1324 [0xfffffffffffffad4])) [0
> %sfp+-1292 S4 A32])) 441 {*iwmmxt_movsi_insn} (nil))
> [ERROR]    ../sysdeps/unix/sysv/linux/libc_fatal.c:172: internal compiler
> error: in reload_cse_simplify_operands, at postreload.c:396
> [ALL  ]    Please submit a full bug report,
> [ALL  ]    with preprocessed source if appropriate.
> [ALL  ]    See <http://gcc.gnu.org/bugs.html> for instructions.
> [ERROR]    make[3]: ***
> [/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc/libio/libc_fatal.o]
> Error 1
> [ALL  ]    make[3]: Leaving directory
> `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/src/glibc-cvs-2.9/libio'
> [ERROR]    make[2]: *** [libio/subdir_lib] Error 2
> [ALL  ]    make[2]: Leaving directory
> `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/src/glibc-cvs-2.9'
> [ERROR]    make[1]: *** [all] Error 2
> [ALL  ]    make[1]: Leaving directory
> `/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/build-libc'
> 



Can you give a pre-processed file for further investigations ? Your report is incomplete without it and hence I'll have to retain the waiting status on this one.
Comment 5 ccg.ijsj 2009-07-02 02:05:25 UTC
Created attachment 18115 [details]
Preprocessed libc_fatal.c
Comment 6 ccg.ijsj 2009-07-02 02:09:18 UTC
(In reply to comment #4)

> Can you give a pre-processed file for further investigations ? Your report is
> incomplete without it and hence I'll have to retain the waiting status on this
> one.
> 
Please find the preprocessed file in libc_fatal.i, and also the cross-compiled shared compiler version:

arm-iwmmxt-linux-gnueabi-gcc -v
Using built-in specs.
Target: arm-iwmmxt-linux-gnueabi
Configured with: /home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/src/gcc-4.4.0/configure --build=i486-build_pc-linux-gnu --host=i486-build_pc-linux-gnu --target=arm-iwmmxt-linux-gnueabi --prefix=/home/jsji/arm-iwmmxt-linux-4.4-ctng/targets/arm-iwmmxt-linux-gnueabi/build/gcc-core-shared --with-local-prefix=/home/jsji/x-tools/arm-iwmmxt-linux-gnueabi/arm-iwmmxt-linux-gnueabi//sys-root --disable-multilib --with-sysroot=/home/jsji/x-tools/arm-iwmmxt-linux-gnueabi/arm-iwmmxt-linux-gnueabi//sys-root --enable-shared --with-arch=iwmmxt --with-tune=iwmmxt --with-float=soft --with-gmp=/home/jsji/x-tools/arm-iwmmxt-linux-gnueabi --with-mpfr=/home/jsji/x-tools/arm-iwmmxt-linux-gnueabi --enable-__cxa_atexit --disable-nls --enable-symvers=gnu --enable-languages=c --enable-target-optspace
Thread model: posix
gcc version 4.4.0 (GCC) 
Comment 7 Enrico Scholz 2009-11-28 23:15:45 UTC
ICE has been verified with gcc 4.4.2.

Some analysis have been done in bug #40836 (comments 20 + 21): the WLDRW operation which would be required for this insn allows only 10 (effective 8) bit but not 12 bit for the immediate offset.  E.g. the '-3888' in

   WLDRW  wcgr0, [fp, #-3888]

is not possible.
Comment 8 Andrew Pinski 2024-03-15 21:49:11 UTC
iwmmxt support has been deprecated in GCC 13 .