This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/50039] New: Segfault in vect_operation_fits_smaller_type()
- From: "arthur.j.odwyer at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 10 Aug 2011 16:10:45 +0000
- Subject: [Bug tree-optimization/50039] New: Segfault in vect_operation_fits_smaller_type()
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50039
Bug #: 50039
Summary: Segfault in vect_operation_fits_smaller_type()
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: arthur.j.odwyer@gmail.com
Created attachment 24972
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24972
Output of "ajo-gcc -std=c99 -O2 -ftree-vectorize -fno-tree-fre test.c -v"
This failure reproduces for me with svn revision 177610 (2011-08-09), going
back at least as far as 177466 (2011-08-05). I'm on Ubuntu 10.10, x86-64.
Incidentally, it might be a good idea to put some "redundant" null-checks in
the tree vectorizer. I see a ton of segfaults being reported against it as far
back as 4.2. If those were ICEs instead, it might be easier to distinguish
duplicates; and IMHO ICEs are preferable to segfaults anyway.
cat >test.c <<EOF
extern unsigned char g_5;
extern int g_31, g_76;
int main(void) {
for (int j=0; j < 2; ++j) {
g_31 = -3;
for (int i=0; i < 2; ++i)
g_76 = (g_31 ? g_31+1 : 0) ^ g_5;
}
}
EOF
gcc -std=c99 -O2 -ftree-vectorize -fno-tree-fre test.c
test.c: In function âmainâ:
test.c:3:5: internal compiler error: Segmentation fault
(gdb) run
Program received signal SIGSEGV, Segmentation fault.
vect_operation_fits_smaller_type (stmts=0x7fffffffde88,
type_in=0x7fffffffde78, type_out=0x7fffffffde80)
at ../../gcc/tree-vect-patterns.c:982
982 if (STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)))
(gdb) backtrace
#0 vect_operation_fits_smaller_type (stmts=0x7fffffffde88,
type_in=0x7fffffffde78, type_out=0x7fffffffde80)
at ../../gcc/tree-vect-patterns.c:982
#1 vect_recog_over_widening_pattern (stmts=0x7fffffffde88,
type_in=0x7fffffffde78, type_out=0x7fffffffde80)
at ../../gcc/tree-vect-patterns.c:1088
#2 0x0000000000d462e9 in vect_pattern_recog_1 (loop_vinfo=Unhandled dwarf
expression opcode 0xf3)
at ../../gcc/tree-vect-patterns.c:1284
[...]
This test case is reduced from the output of Csmith 2.1.0 (git hash 210eda7,
https://github.com/Quuxplusone/csmith/), using the following command line:
csmith --paranoid --longlong --no-pointers --arrays --no-jumps --consts
--no-volatiles --no-checksum --no-divs --no-muls --no-bitfields
--no-packed-struct -s 1902267639