This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/51882] New: ICE: in extract_insn, at recog.c:2109 (unrecognizable insn) when building Mesa on ARM
- From: "thierry dot reding at avionic-design dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 17 Jan 2012 13:58:50 +0000
- Subject: [Bug target/51882] New: ICE: in extract_insn, at recog.c:2109 (unrecognizable insn) when building Mesa on ARM
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51882
Bug #: 51882
Summary: ICE: in extract_insn, at recog.c:2109 (unrecognizable
insn) when building Mesa on ARM
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: thierry.reding@avionic-design.de
Created attachment 26351
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26351
Preprocessed source.
I can reproduce this ICE reliably by running the following commands in a
git checkout of Mesa (git://anongit.freedesktop.org/mesa/mesa.git):
$ cd src/mesa
$ ${CROSS_COMPILE}gcc -c -o swrast/s_span.o swrast/s_span.c -DFEATURE_GL=1
-DFEATURE_ES1=1 -DFEATURE_ES2=1 -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN
-DUSE_XCB -DUSE_XSHM -DHAVE_MINCORE -DHAVE_LIBUDEV -I../../include
-I../../src/glsl -I../../src/mesa -I../../src/mapi -I../../src/gallium/include
-I../../src/gallium/auxiliary -mlittle-endian -mapcs -mabi=aapcs-linux
-mno-thumb-interwork -g -O2 -marm -march=armv7-a -mtune=cortex-a9 -Uarm
-mfpu=vfpv3-d16 -mfloat-abi=softfp -Wall -Wextra -Wmissing-prototypes -std=c99
-ffast-math -fno-strict-aliasing -fno-builtin-memcmp -fPIC -fvisibility=hidden
-save-temps -v
Where the CROSS_COMPILE variable points to the ARM cross-compiler. I've tested
with a variety of versions and can reproduce this with the CodeSourcery
2009q3 (gcc 4.4.1), 2010q1 (gcc 4.4.1), 2010.09 (gcc 4.5.1), 2011.03 (gcc
4.5.2)
and 2011.09 (gcc 4.6.1) toolchains as well as with a custom toolchain based on
gcc 4.6.2 and gcc-4.6-20120113. However, the issue is no longer present in the
latest 4.7 snapshot (tested with a custom toolchain based on gcc-4.7-20120114).
I was also not able to reproduce the ICE with an older CodeSourcery toolchain
(2009q1, gcc 4.3.3).
The attached preprocessed source file is from the custom gcc-4.6-20120113
toolchain, with the following output when running the above command:
---
Using built-in specs.
COLLECT_GCC=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/bin/arm-unknown-linux-gnueabi-gcc-4.6.3
COLLECT_LTO_WRAPPER=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/lto-wrapper
Target: arm-unknown-linux-gnueabi
Configured with: ../configure --target=arm-unknown-linux-gnueabi
--prefix=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr
--datadir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/share
--infodir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/share/info
--mandir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/share/man
--libdir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib
--libexecdir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib
--includedir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/sys-root/usr/include
--with-gxx-include-dir=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/sys-root/usr/include/c++/4.6.3
--with-pkgversion='PBS 2010.08-wip' --program-prefix=arm-unknown-linux-gnueabi-
--with-mpfr=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr
--with-gmp=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr
--enable-languages=c,c++,objc,obj-c++ --disable-libssp
--with-as=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/bin/arm-unknown-linux-gnueabi-as
--with-ld=/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/bin/arm-unknown-linux-gnueabi-ld
--with-sysroot=yes
Thread model: posix
gcc version 4.6.3 20120113 (prerelease) (PBS 2010.08-wip)
COLLECT_GCC_OPTIONS='-c' '-o' 'swrast/s_span.o' '-D' 'FEATURE_GL=1' '-D'
'FEATURE_ES1=1' '-D' 'FEATURE_ES2=1' '-D' '_GNU_SOURCE' '-D' 'PTHREADS' '-D'
'HAVE_POSIX_MEMALIGN' '-D' 'USE_XCB' '-D' 'USE_XSHM' '-D' 'HAVE_MINCORE' '-D'
'HAVE_LIBUDEV' '-I' '../../include' '-I' '../../src/glsl' '-I' '../../src/mesa'
'-I' '../../src/mapi' '-I' '../../src/gallium/include' '-I'
'../../src/gallium/auxiliary' '-mlittle-endian' '-mapcs' '-mabi=aapcs-linux'
'-mno-thumb-interwork' '-g' '-O2' '-marm' '-march=armv7-a' '-mtune=cortex-a9'
'-U' 'arm' '-mfpu=vfpv3-d16' '-mfloat-abi=softfp' '-Wall' '-Wextra'
'-Wmissing-prototypes' '-std=c99' '-ffast-math' '-fno-strict-aliasing'
'-fno-builtin-memcmp' '-fPIC' '-fvisibility=hidden' '-save-temps' '-v'
/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/cc1
-E -quiet -v -I ../../include -I ../../src/glsl -I ../../src/mesa -I
../../src/mapi -I ../../src/gallium/include -I ../../src/gallium/auxiliary -D
FEATURE_GL=1 -D FEATURE_ES1=1 -D FEATURE_ES2=1 -D _GNU_SOURCE -D PTHREADS -D
HAVE_POSIX_MEMALIGN -D USE_XCB -D USE_XSHM -D HAVE_MINCORE -D HAVE_LIBUDEV -U
arm swrast/s_span.c -mlittle-endian -mapcs -mabi=aapcs-linux
-mno-thumb-interwork -marm -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16
-mfloat-abi=softfp -std=c99 -Wall -Wextra -Wmissing-prototypes -ffast-math
-fno-strict-aliasing -fno-builtin-memcmp -fPIC -fvisibility=hidden -g
-fworking-directory -O2 -fpch-preprocess -o s_span.i
ignoring nonexistent directory
"/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/sys-root/usr/local/include"
ignoring nonexistent directory
"/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../../arm-unknown-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
../../include
../../src/glsl
../../src/mesa
../../src/mapi
../../src/gallium/include
../../src/gallium/auxiliary
/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/include
/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/include-fixed
/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/sys-root/usr/include
End of search list.
COLLECT_GCC_OPTIONS='-c' '-o' 'swrast/s_span.o' '-D' 'FEATURE_GL=1' '-D'
'FEATURE_ES1=1' '-D' 'FEATURE_ES2=1' '-D' '_GNU_SOURCE' '-D' 'PTHREADS' '-D'
'HAVE_POSIX_MEMALIGN' '-D' 'USE_XCB' '-D' 'USE_XSHM' '-D' 'HAVE_MINCORE' '-D'
'HAVE_LIBUDEV' '-I' '../../include' '-I' '../../src/glsl' '-I' '../../src/mesa'
'-I' '../../src/mapi' '-I' '../../src/gallium/include' '-I'
'../../src/gallium/auxiliary' '-mlittle-endian' '-mapcs' '-mabi=aapcs-linux'
'-mno-thumb-interwork' '-g' '-O2' '-marm' '-march=armv7-a' '-mtune=cortex-a9'
'-U' 'arm' '-mfpu=vfpv3-d16' '-mfloat-abi=softfp' '-Wall' '-Wextra'
'-Wmissing-prototypes' '-std=c99' '-ffast-math' '-fno-strict-aliasing'
'-fno-builtin-memcmp' '-fPIC' '-fvisibility=hidden' '-save-temps' '-v'
/home/thierry.reding/src/pbs-experimental.git/toolchains/arm-unknown-linux-gnueabi/usr/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.6.3/cc1
-fpreprocessed s_span.i -quiet -dumpbase s_span.c -mlittle-endian -mapcs
-mabi=aapcs-linux -mno-thumb-interwork -marm -march=armv7-a -mtune=cortex-a9
-mfpu=vfpv3-d16 -mfloat-abi=softfp -auxbase-strip swrast/s_span.o -g -O2 -Wall
-Wextra -Wmissing-prototypes -std=c99 -version -ffast-math -fno-strict-aliasing
-fno-builtin-memcmp -fPIC -fvisibility=hidden -o s_span.s
GNU C (PBS 2010.08-wip) version 4.6.3 20120113 (prerelease)
(arm-unknown-linux-gnueabi)
compiled by GNU C version 4.6.2 20111223 (prerelease), GMP version
5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C (PBS 2010.08-wip) version 4.6.3 20120113 (prerelease)
(arm-unknown-linux-gnueabi)
compiled by GNU C version 4.6.2 20111223 (prerelease), GMP version
5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 7fad8c4e675218b56e8d9c2b6af7198f
swrast/s_span.c: In function â_swrast_write_rgba_spanâ:
swrast/s_span.c:1304:1: error: unrecognizable insn:
(insn 5607 5606 5608 280 (set (reg:HI 1 r1)
(reg:SI 69 s6)) swrast/s_span.c:891 -1
(nil))
swrast/s_span.c:1304:1: internal compiler error: in extract_insn, at
recog.c:2109
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
---
I haven't been able to reduce this into a small test-case unfortunately.
However I was able to bisect the issue to the following commit in Mesa:
3d7c5a4f6f4155e249f6eac76d861eb1bc59eb69. I'm not sure if that helps,
though.
I have also played around with various compiler options. The ICE goes
away if I use -O1 instead of -O2. It also goes away if I change
-mfloat-abi=softfp to -mfloat-abi=soft. If I change -mtune=cortex-a9 to
-mtune=cortex-a8, it also compiles fine.
I'd be happy to provide more information if needed.