OSDN Git Service

Fix PR42326: handle default definitions.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Mar 2010 17:48:55 +0000 (17:48 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Mar 2010 17:48:55 +0000 (17:48 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157280 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog.graphite
gcc/sese.c
gcc/testsuite/gcc.dg/graphite/pr42326.c [new file with mode: 0644]

index e3e6ecd..5406717 100644 (file)
@@ -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
index d7a9faa..545b1c6 100644 (file)
@@ -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 (file)
index 0000000..de5d56e
--- /dev/null
@@ -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;
+}