Specs: Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../configure --prefix=/usr/lib/gcc-snapshot --disable-libgcj --disable-libssp --disable-nls --disable-werror --disable-checking --enable-clocale=gnu --enable-__cxa_atexit --enable-languages=c,c++,fortran,objc --enable-libstdcxx-allocator=new --enable-shared --enable-ssp --enable-threads=posix --enable-version-specific-runtime-libs --without-included-gettext --without-system-libunwind --with-system-zlib Thread model: posix gcc version 4.3.0 20070928 (experimental) (GCC) And internal compiler error : [/packages/mplayer/libswscale]> cc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdisabled-optimization -Wno-pointer-sign -Wdeclaration-after-statement -I. -I.. -I../libavutil -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4 -march=native -mtune=native -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DHAVE_CONFIG_H -I/usr/include/ -I/usr/include/SDL -D_REENTRANT -I/usr/include/freetype2 -I/usr/include -c -o rgb2rgb.o rgb2rgb.c rgb2rgb_template.c: In function 'rgb15to24_C': rgb2rgb_template.c:936: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. rgb2rgb.s is attached.
Created attachment 14269 [details] rgb2rgb.s produced with -save-temps
The .i file is important and not the .s file.
Created attachment 14270 [details] Corresponding *.i file
segfaults with -ftree-vectorize in SLP. reduced testcase: --cut here-- typedef unsigned char uint8_t; typedef unsigned short uint16_t; void rgb15to24_C (const uint8_t * src, uint8_t * dst, long src_size) { const uint16_t *end; const uint16_t *s = (uint16_t *)src; uint8_t *d = (uint8_t *)dst; end = s + src_size/2; while (s < end) { uint16_t bgr = *s++; *d++ = (bgr&0x1F)<<3; *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x7C00)>>7; } } --cut here-- gcc -O2 -ftree-vectorize -msse2: t.c: In function �rgb15to24_C�: t.c:6: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. Program received signal SIGSEGV, Segmentation fault. 0x0000000000a94d24 in vect_build_slp_tree (loop_vinfo=0x1039cc0, node=0x7fffb8b97da0, group_size=3, slp_impossible=0x7fffb8b97e3f "", inside_cost=0x7fffb8b97e38, outside_cost=0x7fffb8b97e34, ncopies_for_cost=3) at ../../gcc-svn/trunk/gcc/tree-vect-analyze.c:2700 2700 if (!VECTOR_MODE_P (optab_op2_mode)) #0 0x0000000000a94d24 in vect_build_slp_tree (loop_vinfo=0x1039cc0, node=0x7fffb8b97da0, group_size=3, slp_impossible=0x7fffb8b97e3f "", inside_cost=0x7fffb8b97e38, outside_cost=0x7fffb8b97e34, ncopies_for_cost=3) at ../../gcc-svn/trunk/gcc/tree-vect-analyze.c:2700 #1 0x0000000000a94f73 in vect_build_slp_tree (loop_vinfo=0x1039cc0, node=0x7fffb8b97e28, group_size=3, slp_impossible=0x7fffb8b97e3f "", inside_cost=0x7fffb8b97e38, outside_cost=0x7fffb8b97e34, ncopies_for_cost=3) at ../../gcc-svn/trunk/gcc/tree-vect-analyze.c:2870 #2 0x0000000000a955e3 in vect_analyze_slp_instance (loop_vinfo=0x1039cc0, stmt=<value optimized out>) at ../../gcc-svn/trunk/gcc/tree-vect-analyze.c:3000 #3 0x0000000000a993e0 in vect_analyze_loop (loop=<value optimized out>) at ../../gcc-svn/trunk/gcc/tree-vect-analyze.c:3045 #4 0x00000000007f82ce in vectorize_loops () at ../../gcc-svn/trunk/gcc/tree-vectorizer.c:2501 Confirmed on x86_64 and i686/sse2.
Patch in testing: --cut here-- Index: tree-vect-analyze.c =================================================================== --- tree-vect-analyze.c (revision 128890) +++ tree-vect-analyze.c (working copy) @@ -2696,6 +2696,13 @@ return false; } icode = (int) optab->handlers[(int) vec_mode].insn_code; + if (icode == CODE_FOR_nothing) + { + if (vect_print_dump_info (REPORT_SLP)) + fprintf (vect_dump, + "Build SLP failed: op not supported by target."); + return false; + } optab_op2_mode = insn_data[icode].operand[2].mode; if (!VECTOR_MODE_P (optab_op2_mode)) { --cut here--
(In reply to comment #5) > Patch in testing: Thanks for fixing this! (I've just started to test the exact same patch :)) Ira
Fix summary , swcale -> swscale . Thanks for the fast fix!
Subject: Bug 33597 Author: uros Date: Sun Sep 30 12:45:32 2007 New Revision: 128891 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=128891 Log: PR tree-optimization/33597 * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode. testsuite/ChangeLog: PR tree-optimization/33597 * gcc.dg/vect/pr33597.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/vect/pr33597.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-analyze.c
Fixed.