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