From 13dca219bab028869c2204d1380a3a352b762c4c Mon Sep 17 00:00:00 2001 From: spop Date: Mon, 8 Mar 2010 17:48:55 +0000 Subject: [PATCH] Fix PR42326: handle default definitions. 2010-03-02 Sebastian Pop PR middle-end/42326 * sese.c (name_defined_in_loop_p): Return false for default definitions. * gcc.dg/graphite/pr42326.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157280 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 e3e6ecdd106..54067176247 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,11 @@ +2010-03-02 Sebastian Pop + + 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 * graphite-clast-to-gimple.c (find_cloog_iv_in_expr): Simplify diff --git a/gcc/sese.c b/gcc/sese.c index d7a9faa1ad8..545b1c6b5a9 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 00000000000..de5d56ec93e --- /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; +} -- 2.11.4.GIT