Summary: | Internal compiler error while compiling libswscale from ffmpeg | ||
---|---|---|---|
Product: | gcc | Reporter: | İsmail Dönmez <ismail> |
Component: | tree-optimization | Assignee: | Uroš Bizjak <ubizjak> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gcc-bugs |
Priority: | P3 | ||
Version: | 4.3.0 | ||
Target Milestone: | 4.3.0 | ||
URL: | http://gcc.gnu.org/ml/gcc-patches/2007-09/msg02085.html | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2007-09-30 10:28:58 | |
Attachments: |
rgb2rgb.s produced with -save-temps
Corresponding *.i file |
Description
İsmail Dönmez
2007-09-29 22:57:28 UTC
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. |