From 1344284efadc70769312bb0707a8266cc50260ce Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Thu, 7 Jun 2007 02:12:31 +0000 Subject: [PATCH] re PR tree-optimization/32231 (Segfault in verify_ssa_name) 2007-06-06 Andrew Pinski PR tree-opt/32231 * tree-vect-transform.c (vectorizable_call): Call update_stmt after changing the right hand side of the assignment. 2007-06-06 Andrew Pinski PR tree-opt/32231 * gcc.target/i386/vectorize4.c: New test. From-SVN: r125521 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/vectorize4.c | 16 ++++++++++++++++ gcc/tree-vect-transform.c | 1 + 4 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/vectorize4.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44fef001437..f95d01a072e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-06 Andrew Pinski + + PR tree-opt/32231 + * tree-vect-transform.c (vectorizable_call): Call update_stmt + after changing the right hand side of the assignment. + 2007-06-06 Eric Christopher * config.gcc (i?86-*-darwin*): Remove arch parameter. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d7cc977e505..a1852f0cb08 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-06-06 Andrew Pinski + + PR tree-opt/32231 + * gcc.target/i386/vectorize4.c: New test. + 2007-06-06 Steve Ellcey * gfortran.dg/integer_exponentiation_3.F90: Use approx. check. diff --git a/gcc/testsuite/gcc.target/i386/vectorize4.c b/gcc/testsuite/gcc.target/i386/vectorize4.c new file mode 100644 index 00000000000..f3d605e228a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vectorize4.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target ilp32 } */ +/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2 --param ggc-min-expand=0 --param ggc-min-heapsize=0" } */ +/* This test, tests two thing, we vectorize square root and also we don't crash due to a GC issue. */ + + +extern double sqrt (double __x); +calc_freq (int *dest) +{ + float tmp_out[257]; + int i; + for (i = 0; i < 256; i++) + dest[i] = sqrt (tmp_out[i]); +} + +/* { dg-final { scan-assembler "sqrtpd" } } */ diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 6108532064b..eff1ed7db7d 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -1926,6 +1926,7 @@ vectorizable_call (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt) harmless. */ type = TREE_TYPE (scalar_dest); GIMPLE_STMT_OPERAND (stmt, 1) = fold_convert (type, integer_zero_node); + update_stmt (stmt); return true; }