Bug 24861 - internal compiler error when building gcc with --with-cpu=ep9312 --with-fpu=maverick
Summary: internal compiler error when building gcc with --with-cpu=ep9312 --with-fpu=m...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.0.2
: P3 critical
Target Milestone: 4.0.3
Assignee: Not yet assigned to anyone
URL:
Keywords: build, ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2005-11-14 20:07 UTC by Dario Massarin
Modified: 2005-11-16 22:34 UTC (History)
4 users (show)

See Also:
Host: x86_64-pc-linux-gnu
Target: armv4l-unknown-linux-gnu
Build: x86_64-pc-linux-gnu
Known to work:
Known to fail:
Last reconfirmed:


Attachments
preprocessed source, as required (17.34 KB, text/x-objcsrc)
2005-11-14 20:10 UTC, Dario Massarin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dario Massarin 2005-11-14 20:07:31 UTC
When compiling gcc with the --with-cpu=ep9312 and --with-fpu=maverick options

Gcc was configured with:
--prefix=/usr --bindir=/usr/armv4l-unknown-linux-gnu/gcc-bin/4.0.2  --includedir=/usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include --datadir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2 --mandir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2/man --infodir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2/info --with-gxx-include-dir=/usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include/g++-v4 --host=x86_64-pc-linux-gnu --target=armv4l-unknown-linux-gnu --with-cpu=ep9312 --with-fpu=maverick --build=x86_64-pc-linux-gnu --disable-altivec --disable-nls --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++ --with-sysroot=/usr/armv4l-unknown-linux-gnu --enable-__cxa_atexit --enable-clocale=gnu

This is the error:
/tmp/build/gcc/xgcc -B/tmp/build/gcc/ -B/usr/armv4l-unknown-linux-gnu/bin/ -B/usr/armv4l-unknown-linux-gnu/lib/ -isystem /usr/armv4l-unknown-linux-gnu/include -isystem /usr/armv4l-unknown-linux-gnu/sys-include -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fomit-frame-pointer -fPIC -mcpu=ep9312 -mfpu=maverick -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I../../gcc-4.0.2/gcc -I../../gcc-4.0.2/gcc/. -I../../gcc-4.0.2/gcc/../include -I../../gcc-4.0.2/gcc/../libcpp/include  -DL_fixunssfsi -fvisibility=hidden -DHIDE_EXPORTS -c ../../gcc-4.0.2/gcc/libgcc2.c -o libgcc/./_fixunssfsi.o
../../gcc-4.0.2/gcc/libgcc2.c: In function '__fixunssfsi':
../../gcc-4.0.2/gcc/libgcc2.c:1517: error: insn does not satisfy its constraints:
(insn 75 7 6 0 (set (reg:SI 28 mv1)
        (const_int 1325400064 [0x4f000000])) 143 {*arm_movsi_insn} (nil)
    (nil))
../../gcc-4.0.2/gcc/libgcc2.c:1517: internal compiler error: in copyprop_hardreg_forward_1, at regrename.c:1570


Executing with -v:

/tmp/build/gcc/xgcc -B/tmp/build/gcc/ -B/usr/armv4l-unknown-linux-gnu/bin/ -B/usr/armv4l-unknown-linux-gnu/lib/ -isystem /usr/armv4l-unknown-linux-gnu/include -isystem /usr/armv4l-unknown-linux-gnu/sys-include -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fomit-frame-pointer -fPIC -mcpu=ep9312 -mfpu=maverick -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I../../gcc-4.0.2/gcc -I../../gcc-4.0.2/gcc/. -I../../gcc-4.0.2/gcc/../include -I../../gcc-4.0.2/gcc/../libcpp/include  -DL_fixunssfsi -fvisibility=hidden -DHIDE_EXPORTS -c ../../gcc-4.0.2/gcc/libgcc2.c -o libgcc/./_fixunssfsi.o -v -save-temps -v
Reading specs from /tmp/build/gcc/specs
Target: armv4l-unknown-linux-gnu
Configured with: ../gcc-4.0.2/configure --prefix=/usr --bindir=/usr/armv4l-unknown-linux-gnu/gcc-bin/4.0.2 --includedir=/usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include --datadir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2 --mandir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2/man --infodir=/usr/share/gcc-data/armv4l-unknown-linux-gnu/4.0.2/info --with-gxx-include-dir=/usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include/g++-v4 --host=x86_64-pc-linux-gnu --target=armv4l-unknown-linux-gnu --with-cpu=ep9312 --with-fpu=maverick --build=x86_64-pc-linux-gnu --disable-altivec --disable-nls --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++ --with-sysroot=/usr/armv4l-unknown-linux-gnu --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.0.2
 /tmp/build/gcc/cc1 -E -quiet -v -v -I. -I. -I../../gcc-4.0.2/gcc -I../../gcc-4.0.2/gcc/. -I../../gcc-4.0.2/gcc/../include -I../../gcc-4.0.2/gcc/../libcpp/include -iprefix /tmp/build/gcc/../../../lib/gcc/armv4l-unknown-linux-gnu/4.0.2/ -isystem /tmp/build/gcc/include -DIN_GCC -DCROSS_COMPILE -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -DL_fixunssfsi -DHIDE_EXPORTS -isystem /usr/armv4l-unknown-linux-gnu/include -isystem /usr/armv4l-unknown-linux-gnu/sys-include -isystem ./include ../../gcc-4.0.2/gcc/libgcc2.c -mcpu=ep9312 -mfpu=maverick -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fomit-frame-pointer -fPIC -fvisibility=hidden -O2 -fpch-preprocess -o libgcc2.i
ignoring duplicate directory "/usr/armv4l-unknown-linux-gnu/sys-include"
ignoring duplicate directory "./include"
ignoring nonexistent directory "/tmp/build/gcc/../../../lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include"
ignoring nonexistent directory "/tmp/build/gcc/../../../lib/gcc/armv4l-unknown-linux-gnu/4.0.2/../../../../armv4l-unknown-linux-gnu/include"
ignoring nonexistent directory "/usr/armv4l-unknown-linux-gnu/usr/local/include"
ignoring duplicate directory "/usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/../../../../armv4l-unknown-linux-gnu/include"
ignoring duplicate directory "/usr/armv4l-unknown-linux-gnu/usr/include"
ignoring duplicate directory "."
ignoring duplicate directory "../../gcc-4.0.2/gcc/."
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../gcc-4.0.2/gcc
 ../../gcc-4.0.2/gcc/../include
 ../../gcc-4.0.2/gcc/../libcpp/include
 /tmp/build/gcc/include
 /usr/armv4l-unknown-linux-gnu/include
 /usr/lib/gcc/armv4l-unknown-linux-gnu/4.0.2/include
End of search list.
 /tmp/build/gcc/cc1 -fpreprocessed libgcc2.i -quiet -dumpbase libgcc2.c -mcpu=ep9312 -mfpu=maverick -auxbase-strip libgcc/./_fixunssfsi.o -g0 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -fomit-frame-pointer -fPIC -fvisibility=hidden -o libgcc2.s
GNU C version 4.0.2 (armv4l-unknown-linux-gnu)
        compiled by GNU C version 3.4.3 20041125 (Gentoo 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7).
GGC heuristics: --param ggc-min-expand=96 --param ggc-min-heapsize=124136
../../gcc-4.0.2/gcc/libgcc2.c: In function '__fixunssfsi':
../../gcc-4.0.2/gcc/libgcc2.c:1517: error: insn does not satisfy its constraints:
(insn 75 7 6 0 (set (reg:SI 28 mv1)
        (const_int 1325400064 [0x4f000000])) 143 {*arm_movsi_insn} (nil)
    (nil))
../../gcc-4.0.2/gcc/libgcc2.c:1517: internal compiler error: in copyprop_hardreg_forward_1, at regrename.c:1570
Comment 1 Dario Massarin 2005-11-14 20:10:31 UTC
Created attachment 10241 [details]
preprocessed source, as required
Comment 2 Dario Massarin 2005-11-14 20:43:19 UTC
There is the very same problem with gcc 4.0.0
Comment 3 Richard Earnshaw 2005-11-16 22:14:42 UTC
Subject: Bug 24861

Author: rearnsha
Date: Wed Nov 16 22:14:38 2005
New Revision: 107104

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107104
Log:
	PR target/24861
	* arm.md (split for movsf with immediate): Restrict split to insns
	that set a general register.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.md

Comment 4 Richard Earnshaw 2005-11-16 22:31:17 UTC
Subject: Bug 24861

Author: rearnsha
Date: Wed Nov 16 22:31:14 2005
New Revision: 107105

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107105
Log:
	PR target/24861
	* arm.md (split for movsf with immediate): Restrict split to insns
	that set a general register.

Modified:
    branches/gcc-4_0-branch/gcc/ChangeLog
    branches/gcc-4_0-branch/gcc/config/arm/arm.md

Comment 5 Richard Earnshaw 2005-11-16 22:34:09 UTC
There was a split pattern that was converting a set of a floating point value into a set of an integer value.  This doesn't match anything if the register being set is a Maverick Co-pro register, and in general we only want to do this if setting an ARM core register.  Having restricted the pattern in this way, the extra constraint that disabled the pattern for the FPA is no-longer relevant.