There is a problem with NE rtl handling for powerpc e500 target on the latest 3.4 pre-release. This little program, seg faults the compiler: #include <spe.h> __ev64_u16__ * g_vp_u16 ; __ev64_u16__ g_v_u16 ; void test___ev_stdd (void) { __ev_stdd (g_v_u16,g_vp_u16,31U); } Command line was: gcc-3.4-20040406/bin/gcc -O1 -S x.c -save-temps Here is the output: x.c: In function `test___ev_stdd': x.c:9: internal compiler error: in copy_to_mode_reg, at explow.c:667 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. Several benchmarks in spec2k have problems. Perlbmk also ICE: op.c: In function `list_assignment': op.c:2552: error: unrecognizable insn: (insn:HI 257 256 258 18 (set (reg:CCEQ 212) (compare:CCEQ (gtu:SI (reg:CCUNS 211) (const_int 0 [0x0])) (const_int 0 [0x0]))) -1 (nil) (expr_list:REG_DEAD (reg:CCUNS 211) (nil))) op.c:2552: internal compiler error: in extract_insn, at recog.c:2083
Created attachment 6077 [details] This is the .i file for the small test case submited This is the .i file for the small test case submited
Here is the outut of -v (config info) ------------------------------------- Reading specs from /root/edmar/gcc-3.4-20040406/lib/gcc/powerpc-unknown-linux-gnuspe/3.4.0/specs Configured with: ../src/gcc_sources/configure --prefix=/root/edmar/gcc-3.4-20040406 --target=powerpc-unknown-linux-gnuspe --host=powerpc-unknown-linux-gnuspe --enable-languages=c,c++ --disable-gdbtk --without-x Thread model: posix gcc version 3.4.0 20040407 (prerelease) /root/edmar/gcc-3.4-20040406/libexec/gcc/powerpc-unknown-linux-gnuspe/3.4.0/cc1 -E -quiet -v -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux -Asystem=linux -Asystem=unix -Asystem=posix x.c -O1 -o x.i ignoring nonexistent directory "/root/edmar/gcc-3.4-20040406/lib/gcc/powerpc-unknown-linux-gnuspe/3.4.0/../../../../powerpc-unknown-linux-gnuspe/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /root/edmar/gcc-3.4-20040406/include /root/edmar/gcc-3.4-20040406/lib/gcc/powerpc-unknown-linux-gnuspe/3.4.0/include /usr/include End of search list. /root/edmar/gcc-3.4-20040406/libexec/gcc/powerpc-unknown-linux-gnuspe/3.4.0/cc1 -fpreprocessed x.i -quiet -dumpbase x.c -auxbase x -O1 -version -o x.s GNU C version 3.4.0 20040407 (prerelease) (powerpc-unknown-linux-gnuspe) compiled by GNU C version 2.95.4 20010319 (prerelease/franzo/20011204). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64501 x.c: In function `test___ev_stdd': x.c:9: internal compiler error: in copy_to_mode_reg, at explow.c:667 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
typedef unsigned short __attribute__((vector_size(8))) __ev64_u16__; Confirmed with current tree-ssa. Reduced snippet is: __ev64_u16__ * g_vp_u16 ; __ev64_u16__ g_v_u16 ; void test___ev_stdd (void) { __builtin_spe_evstdd (g_v_u16,g_vp_u16,31U); }
Fixed. http://gcc.gnu.org/ml/gcc-patches/2004-05/msg01701.html