gcc fails to compile source file from mythtv - unknown insn. Reading specs from /usr/local/gcc-3.3.1/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3.1/specs Configured with: ../gcc-3.3.1/configure --prefix=/usr/local/gcc-3.3.1 --enable-threads --disable-nls --enable-languages=c,c++,f77 Thread model: posix gcc version 3.3.1 /usr/local/gcc-3.3.1/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3.1/cc1 -E -quiet -v -I/usr/lib64/qt-3.1/mkspecs/default -I. -I/usr/local/include -I../../libs/libmythtv -I/usr/lib64/qt-3.1/include -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1 -D_REENTRANT -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX="/usr/local" -DMMX -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_PLUGIN filter_linearblend.c -march=pentiumpro -Wall -W -Wno-missing-prototypes -fomit-frame-pointer -fPIC -O3 filter_linearblend.i ignoring nonexistent directory "/usr/local/gcc-3.3.1/x86_64-unknown-linux-gnu/include" ignoring duplicate directory "/usr/local/include" as it is a non-system directory that duplicates a system directory #include "..." search starts here: #include <...> search starts here: /usr/lib64/qt-3.1/mkspecs/default . ../../libs/libmythtv /usr/lib64/qt-3.1/include /usr/local/include /usr/local/gcc-3.3.1/include /usr/local/gcc-3.3.1/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3.1/include /usr/include End of search list. /usr/local/gcc-3.3.1/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3.1/cc1 -fpreprocessed filter_linearblend.i -quiet -dumpbase filter_linearblend.c -march=pentiumpro -auxbase-strip filter_linearblend.o -O3 -Wall -W -Wno-missing-prototypes -version -fomit-frame-pointer -fPIC -o filter_linearblend.s GNU C version 3.3.1 (x86_64-unknown-linux-gnu) compiled by GNU C version 3.3.1. GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127775 filter_linearblend.c: In function `mm_support': filter_linearblend.c:148: error: unrecognizable insn: (insn:HI 327 326 116 14 0x2a959a2660 (set (reg/v:SI 59) (plus:SI (mult:SI (reg/v:SI 59) (const_int 4 [0x4])) (const_int 1 [0x1]))) -1 (insn_list 326 (nil)) (nil)) filter_linearblend.c:148: internal compiler error: in extract_insn, at recog.c:2175
Created attachment 4921 [details] Output from -save-temps
Created attachment 4922 [details] Offending source file
I can reproduce with with gcc version 3.3.1 20030626 (Debian prerelease), I don't have anything newer, so leaving unconfirmed for now. Test case: int mm_support(int edx) { int rval = 1; if (edx) rval |= 4; return rval; } Options needed: -m64 -march=pentiumpro -O Probably a bad interaction of -march=pentiumpro with the 64 bit code generation. bash-2.05b$ gcc -m64 -march=pentiumpro -S tmp.c -O tmp.c: In function `mm_support': tmp.c:7: error: unrecognizable insn: (insn 39 38 23 0 0x401d6040 (set (reg/v:SI 60) (plus:SI (mult:SI (reg/v:SI 60) (const_int 4 [0x4])) (const_int 1 [0x1]))) -1 (insn_list 38 (nil)) (nil)) tmp.c:7: internal compiler error: in extract_insn, at recog.c:2175
On the mainline, it errors out saying that the option -march=pentiumpro does not support 64bit code.
Since the options are no rejected on the mainline and this is not a regression, closing as fixed.
*** Bug 13043 has been marked as a duplicate of this bug. ***