From 392c0ce1d7fbeb987a1ade0dcbe7b3fb28990101 Mon Sep 17 00:00:00 2001 From: Sebastian Pop <sebastian.pop@amd.com> Date: Mon, 8 Mar 2010 17:48:55 +0000 Subject: [PATCH] Fix PR42326: handle default definitions. 2010-03-02 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/42326 * sese.c (name_defined_in_loop_p): Return false for default definitions. * gcc.dg/graphite/pr42326.c: New. From-SVN: r157280 --- gcc/ChangeLog.graphite | 8 ++++++++ gcc/sese.c | 5 ++--- gcc/testsuite/gcc.dg/graphite/pr42326.c | 20 ++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr42326.c diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index e3e6ecdd1069..54067176247a 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,11 @@ +2010-03-02 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/42326 + * sese.c (name_defined_in_loop_p): Return false for default + definitions. + + * gcc.dg/graphite/pr42326.c: New. + 2010-02-23 Sebastian Pop <sebastian.pop@amd.com> * graphite-clast-to-gimple.c (find_cloog_iv_in_expr): Simplify diff --git a/gcc/sese.c b/gcc/sese.c index d7a9faa1ad82..545b1c6b5a9b 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -1106,9 +1106,8 @@ get_false_edge_from_guard_bb (basic_block bb) static bool name_defined_in_loop_p (tree name, loop_p loop) { - gimple stmt = SSA_NAME_DEF_STMT (name); - - return (gimple_bb (stmt)->loop_father == loop); + return !SSA_NAME_IS_DEFAULT_DEF (name) + && gimple_bb (SSA_NAME_DEF_STMT (name))->loop_father == loop; } /* Returns true when EXPR contains SSA_NAMEs defined in LOOP. */ diff --git a/gcc/testsuite/gcc.dg/graphite/pr42326.c b/gcc/testsuite/gcc.dg/graphite/pr42326.c new file mode 100644 index 000000000000..de5d56ec93e2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr42326.c @@ -0,0 +1,20 @@ +/* { dg-options "-O1 -floop-parallelize-all" } */ + +double lagrange(const double x[], + const double y[], + long n, + double xval) +{ + long i, j; + double yval = 0.; + + for( i=0; i < n; i++ ) + { + double l = 1.; + for( j=0; j < n; j++ ) + if( i != j ) + l *= (xval-x[j])/(x[i]-x[j]); + yval += y[i]*l; + } + return yval; +} -- GitLab