From fb2c2b167238f82d9103b7fb78ad24918548c245 Mon Sep 17 00:00:00 2001 From: Ira Rosen Date: Thu, 11 Aug 2011 05:43:14 +0000 Subject: [PATCH] re PR tree-optimization/50039 (Segfault in vect_operation_fits_smaller_type()) PR tree-optimization/50039 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Check that DEF_STMT has a stmt_vec_info. From-SVN: r177647 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c | 15 +++++++++++++++ gcc/testsuite/gcc.dg/vect/vect.exp | 6 ++++++ gcc/tree-vect-patterns.c | 3 ++- 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a727916693f..f85d349b8e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-08-11 Ira Rosen + + PR tree-optimization/50039 + * tree-vect-patterns.c (vect_operation_fits_smaller_type): Check + that DEF_STMT has a stmt_vec_info. + 2011-08-10 Richard Guenther * tree.h (can_trust_pointer_alignment): Remove. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 03c7c016edf..4ec4ba1e7f2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-08-11 Ira Rosen + + PR tree-optimization/50039 + * gcc.dg/vect/vect.exp: Run no-tree-fre-* tests with -fno-tree-fre. + * gcc.dg/vect/no-tree-fre-pr50039.c: New test. + 2011-08-10 H.J. Lu * gcc.target/i386/sse4_1-blendps-2.c: Include . diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c b/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c new file mode 100644 index 00000000000..11c0c70049f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +extern unsigned char g_5; +extern int g_31, g_76; +int main(void) { + int i, j; + for (j=0; j < 2; ++j) { + g_31 = -3; + for (i=0; i < 2; ++i) + g_76 = (g_31 ? g_31+1 : 0) ^ g_5; + } +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp index fd92da8707c..ab92be47ab8 100644 --- a/gcc/testsuite/gcc.dg/vect/vect.exp +++ b/gcc/testsuite/gcc.dg/vect/vect.exp @@ -257,6 +257,12 @@ lappend VECT_SLP_CFLAGS "-fno-tree-reassoc" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-reassoc-bb-slp-*.\[cS\]]] \ "" $VECT_SLP_CFLAGS +# -fno-tree-fre +set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS +lappend DEFAULT_VECTCFLAGS "-fno-tree-fre" +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-fre-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS + # Clean up. set dg-do-what-default ${save-dg-do-what-default} diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index ac3afd89862..ef6a4fd372d 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -897,7 +897,8 @@ vect_operation_fits_smaller_type (gimple stmt, tree def, tree *new_type, else { first = true; - if (!widened_name_p (oprnd, stmt, &half_type, &def_stmt, false)) + if (!widened_name_p (oprnd, stmt, &half_type, &def_stmt, false) + || !vinfo_for_stmt (def_stmt)) return false; } -- 2.30.2