Bug 35821 - Internal compiler error: segmentation fault
Summary: Internal compiler error: segmentation fault
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
: 35822 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-04-04 06:37 UTC by Ramon Bertran
Modified: 2008-04-10 07:10 UTC (History)
2 users (show)

See Also:
Host:
Target: spu-elf
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-04-07 07:06:17


Attachments
Temp file generated when -save-temps flag is set (19.51 KB, text/plain)
2008-04-04 06:42 UTC, Ramon Bertran
Details
Temp file generated when -save-temp flag is set (7.27 KB, text/plain)
2008-04-04 07:17 UTC, Ramon Bertran
Details
File generated using the flag -fdump-tree-vect (17.09 KB, text/plain)
2008-04-04 07:17 UTC, Ramon Bertran
Details
File generated using the flag -fdump-tree-vect and -ftree-vectorizer-verbose=9999 (20.90 KB, text/plain)
2008-04-04 07:18 UTC, Ramon Bertran
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ramon Bertran 2008-04-04 06:37:51 UTC
Crosstoolchain for the Cell. I got an internal compiler error (segmentation fault). I'm usign gcc 4.3.0 .

Command:

/opt/ia32/cell/toolchain/2008-03-28/bin/../bin/spu-gcc        -W -Wall -Winline -Wno-main  -I. -I ../../../include -I ../../../include/spu -I ../../include/jpc -I /scratch/local/rbertran/cellbench//src/lib/misc -I /scratch/local/rbertran/cellbench//src/lib/sync/spu -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include  -DSPU -DFLOAT_MODE -DSIMD_EN -DEN_INTERLEAVING -O5 -c jpc_qmfb_synthesize.c
jpc_qmfb_synthesize.c: In function 'jpc_ns_invlift_row':
jpc_qmfb_synthesize.c:1775: 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.
make: *** [jpc_qmfb_synthesize.o] Error 1
[Exit 2 ]

Command verbose:
/opt/ia32/cell/toolchain/2008-03-28/bin/../bin/spu-gcc        -W -Wall -Winline -Wno-main  -I. -I ../../../include -I ../../../include/spu -I ../../include/jpc -I /scratch/local/rbertran/cellbench//src/lib/misc -I /scratch/local/rbertran/cellbench//src/lib/sync/spu -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include  -DSPU -DFLOAT_MODE -DSIMD_EN -DEN_INTERLEAVING -O5 -c jpc_qmfb_analyze.c -v


Using built-in specs.
Target: spu
Configured with: /home/users/rbertran/scratch-local/cache/gcc-4.3.0/configure --prefix=/opt/ia32/cell/toolchain/2008-03-28/spu --target=spu --with-newlib --program-prefix=spu- --disable-nls --enable-languages=c,c++ --with-as=/opt/ia32/cell/toolchain/2008-03-28/spu/bin/spu-as --with-ld=/opt/ia32/cell/toolchain/2008-03-28/spu/bin/spu-ld
Thread model: single
gcc version 4.3.0 (GCC) 
COLLECT_GCC_OPTIONS='-W' '-Wall' '-Winline' '-Wno-main' '-I.' '-I' '../../../include' '-I' '../../../include/spu' '-I' '../../include/jpc' '-I' '/scratch/local/rbertran/cellbench//src/lib/misc' '-I' '/scratch/local/rbertran/cellbench//src/lib/sync/spu' '-I' '/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include' '-I' '/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include' '-DSPU' '-DFLOAT_MODE' '-DSIMD_EN' '-DEN_INTERLEAVING' '-O5' '-c' '-v'
 /opt/ia32/cell/toolchain/2008-03-28/spu/libexec/gcc/spu/4.3.0/cc1 -quiet -v -I. -I ../../../include -I ../../../include/spu -I ../../include/jpc -I /scratch/local/rbertran/cellbench//src/lib/misc -I /scratch/local/rbertran/cellbench//src/lib/sync/spu -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -DSPU -DFLOAT_MODE -DSIMD_EN -DEN_INTERLEAVING jpc_qmfb_analyze.c -quiet -dumpbase jpc_qmfb_analyze.c -auxbase jpc_qmfb_analyze -O5 -W -Wall -Winline -Wno-main -version -o /tmp/cc9ZNCcX.s
ignoring nonexistent directory "/opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/../../../../spu/sys-include"
ignoring nonexistent directory "/scratch/local/rbertran/cellbench//src/lib/misc"
ignoring nonexistent directory "/scratch/local/rbertran/cellbench//src/lib/sync/spu"
ignoring duplicate directory "/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include"
  as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../../include
 ../../../include/spu
 ../../include/jpc
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/include
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/include-fixed
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/../../../../spu/include
End of search list.
GNU C (GCC) version 4.3.0 (spu)
        compiled by GNU C version 4.1.2 20070925 (Red Hat 4.1.2-33), GMP version 4.2.2, MPFR version 2.3.0-p2.
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129342
Compiler executable checksum: 573e1376cb959e61371bea7b2f291bfa
jpc_qmfb_analyze.c: In function 'jpc_ns_fwdlift_row':
jpc_qmfb_analyze.c:1810: 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.
[Exit 1 ]

GDB debug:
gdb --args /opt/ia32/cell/toolchain/2008-03-28/spu/libexec/gcc/spu/4.3.0/cc1 -quiet -v -I. -I ../../../include -I ../../../include/spu -I ../../include/jpc -I /scratch/local/rbertran/cellbench//src/lib/misc -I /scratch/local/rbertran/cellbench//src/lib/sync/spu -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -DSPU -DFLOAT_MODE -DSIMD_EN -DEN_INTERLEAVING jpc_qmfb_analyze.c -quiet -dumpbase jpc_qmfb_analyze.c -auxbase jpc_qmfb_analyze -O5 -W -Wall -Winline -Wno-main -version -o /tmp/cco5lHmh.s
GNU gdb Red Hat Linux (6.6-45.fc8rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /opt/ia32/cell/toolchain/2008-03-28/spu/libexec/gcc/spu/4.3.0/cc1 -quiet -v -I. -I ../../../include -I ../../../include/spu -I ../../include/jpc -I /scratch/local/rbertran/cellbench//src/lib/misc -I /scratch/local/rbertran/cellbench//src/lib/sync/spu -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -I /opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include -DSPU -DFLOAT_MODE -DSIMD_EN -DEN_INTERLEAVING jpc_qmfb_analyze.c -quiet -dumpbase jpc_qmfb_analyze.c -auxbase jpc_qmfb_analyze -O5 -W -Wall -Winline -Wno-main -version -o /tmp/cco5lHmh.s
ignoring nonexistent directory "/opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/../../../../spu/sys-include"
ignoring nonexistent directory "/scratch/local/rbertran/cellbench//src/lib/misc"
ignoring nonexistent directory "/scratch/local/rbertran/cellbench//src/lib/sync/spu"
ignoring duplicate directory "/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include"
  as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "/opt/ia32/cell/toolchain/2008-03-28/bin/../spu/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../../include
 ../../../include/spu
 ../../include/jpc
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/include
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/include-fixed
 /opt/ia32/cell/toolchain/2008-03-28/spu/lib/gcc/spu/4.3.0/../../../../spu/include
End of search list.
GNU C (GCC) version 4.3.0 (spu)
        compiled by GNU C version 4.1.2 20070925 (Red Hat 4.1.2-33), GMP version 4.2.2, MPFR version 2.3.0-p2.
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129342
Compiler executable checksum: 573e1376cb959e61371bea7b2f291bfa

Program received signal SIGSEGV, Segmentation fault.
set_bb_for_stmt (t=0x0, bb=0xb77c5bb8) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-cfg.c:2670
2670      if (TREE_CODE (t) == PHI_NODE)
Missing separate debuginfos, use: debuginfo-install glibc.i686 gmp.i386 mpfr.i386
(gdb) where
#0  set_bb_for_stmt (t=0x0, bb=0xb77c5bb8) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-cfg.c:2670
#1  0x0823f124 in bsi_insert_after (i=0xbfe23020, t=0x0, m=BSI_NEW_STMT) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-cfg.c:2781
#2  0x08241811 in bsi_insert_on_edge_immediate (e=0xb7808258, stmt=0x0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-cfg.c:3048
#3  0x08313cc0 in vect_create_data_ref_ptr (stmt=<value optimized out>, at_loop=0xb778ca20, offset=0x0, initial_address=0xbfe231b0, ptr_incr=0xbfe231ac, 
    only_init=0 '\0', type=0x0, inv_p=0xbfe231b7 "") at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-vect-transform.c:1105
#4  0x0831b94c in vectorizable_load (stmt=0xb7cd6e70, bsi=0xbfe232fc, vec_stmt=0xbfe231f8, slp_node=0x0)
    at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-vect-transform.c:5774
#5  0x0831e602 in vect_transform_stmt (stmt=0xb7cd6e70, bsi=0xbfe232fc, strided_store=0xbfe2331f "", slp_node=0xb77c5bb8)
    at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-vect-transform.c:6228
#6  0x0831f9de in vect_transform_loop (loop_vinfo=0xa4c93d0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-vect-transform.c:7547
#7  0x083228c3 in vectorize_loops () at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-vectorizer.c:2691
#8  0x081cb124 in execute_one_pass (pass=0x852fae0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/passes.c:1122
#9  0x081cb2c7 in execute_pass_list (pass=0x852fae0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/passes.c:1175
#10 0x081cb2da in execute_pass_list (pass=0x852f9a0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/passes.c:1176
#11 0x081cb2da in execute_pass_list (pass=0x852f1a0) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/passes.c:1176
#12 0x0826e719 in tree_rest_of_compilation (fndecl=0xb7e17780) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/tree-optimize.c:404
#13 0x083645b8 in cgraph_expand_function (node=0xb7e3dce4) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/cgraphunit.c:1157
#14 0x08365f0d in cgraph_optimize () at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/cgraphunit.c:1220
#15 0x08058047 in c_write_global_declarations () at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/c-decl.c:8080
#16 0x082391d6 in toplev_main (argc=36, argv=0xbfe23594) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/toplev.c:1055
#17 0x080a6042 in main (argc=Cannot access memory at address 0x0
) at /home/users/rbertran/scratch-local/cache/gcc-4.3.0/gcc/main.c:35

Sorry if I'm missing some other information that you need. I'm new submitting bugs to gcc. If you need something else, let me know.
Comment 1 Ramon Bertran 2008-04-04 06:42:54 UTC
Created attachment 15420 [details]
Temp file generated when -save-temps flag is set
Comment 2 Andrew Pinski 2008-04-04 06:44:11 UTC
This might be a gc bug with the back-end that shows up with the vectorizer. 
Comment 3 Ramon Bertran 2008-04-04 07:17:10 UTC
Created attachment 15425 [details]
Temp file generated when -save-temp flag is set
Comment 4 Ramon Bertran 2008-04-04 07:17:50 UTC
Created attachment 15426 [details]
File generated using the flag -fdump-tree-vect
Comment 5 Ramon Bertran 2008-04-04 07:18:12 UTC
Created attachment 15427 [details]
File generated using the flag -fdump-tree-vect and -ftree-vectorizer-verbose=9999
Comment 6 Ramon Bertran 2008-04-04 07:25:29 UTC
*** Bug 35822 has been marked as a duplicate of this bug. ***
Comment 7 Ira Rosen 2008-04-07 07:06:16 UTC
I am testing the following patch:

Index: tree-vect-transform.c
===================================================================
--- tree-vect-transform.c       (revision 132478)
+++ tree-vect-transform.c       (working copy)
@@ -1102,8 +1103,12 @@ vect_create_data_ref_ptr (tree stmt, str
   new_temp = vect_create_addr_base_for_vector_ref (stmt, &new_stmt_list,
                                                    offset, loop);
   pe = loop_preheader_edge (loop);
-  new_bb = bsi_insert_on_edge_immediate (pe, new_stmt_list);
-  gcc_assert (!new_bb);
+  if (new_stmt_list)
+    {
+      new_bb = bsi_insert_on_edge_immediate (pe, new_stmt_list);
+      gcc_assert (!new_bb);
+    }
+
   *initial_address = new_temp;

   /* Create: p = (vectype *) initial_base  */

Ira
Comment 8 irar 2008-04-09 10:55:58 UTC
Subject: Bug 35821

Author: irar
Date: Wed Apr  9 10:55:11 2008
New Revision: 134136

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=134136
Log:
	PR tree-optimization/35821
	* tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
	NEW_STMT_LIST is not NULL.


Added:
    branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/vect/pr35821-altivec.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/vect/pr35821-spu.c
Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_3-branch/gcc/tree-vect-transform.c

Comment 9 irar 2008-04-10 05:52:44 UTC
Subject: Bug 35821

Author: irar
Date: Thu Apr 10 05:51:59 2008
New Revision: 134162

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=134162
Log:
	PR tree-optimization/35821
	* tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
	NEW_STMT_LIST is not NULL.


Added:
    trunk/gcc/testsuite/gcc.dg/vect/pr35821-altivec.c
    trunk/gcc/testsuite/gcc.dg/vect/pr35821-spu.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-vect-transform.c

Comment 10 Ira Rosen 2008-04-10 07:10:34 UTC
Fixed.