diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index ae3369e834fa02da273e5e685971bccdd1da61cc..09af72ba9577e75029398c8c2e7b1178ed29f51c 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,9 +1,23 @@
+2009-12-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+	Revert patch fixing PR middle-end/42221.
+
+2009-12-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+	PR middle-end/42180
+	* graphite-sese-to-poly.c (follow_ssa_with_commutative_ops): Handle
+	GIMPLE_CALL.
+
+	* testsuite/gfortran.dg/graphite/pr42180.f90: Add compile flags.
+
 2009-12-18  Sebastian Pop  <sebastian.pop@amd.com>
 
 	PR middle-end/42180
 	* graphite-sese-to-poly.c (split_reduction_stmt): Do not split blocks
 	that contain only one statement.
 
+	* testsuite/gfortran.dg/graphite/pr42180.f90: New.
+
 2009-12-17  Sebastian Pop  <sebastian.pop@amd.com>
 
 	PR middle-end/42393
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 5999a655aeb1b34a741b0f92c3eb750087c039aa..70827a9bab961bf111c768e1fb30207562da26cd 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -2501,7 +2501,8 @@ follow_ssa_with_commutative_ops (tree arg, tree lhs)
 
   stmt = SSA_NAME_DEF_STMT (arg);
 
-  if (gimple_code (stmt) == GIMPLE_NOP)
+  if (gimple_code (stmt) == GIMPLE_NOP
+      || gimple_code (stmt) == GIMPLE_CALL)
     return NULL;
 
   if (gimple_code (stmt) == GIMPLE_PHI)
diff --git a/gcc/testsuite/gfortran.dg/graphite/pr42180.f90 b/gcc/testsuite/gfortran.dg/graphite/pr42180.f90
index 6c8daeaea608735034034fbbce9d05086409573a..523c479e215a58bc79b79b7b6e5375eaf7c5df23 100644
--- a/gcc/testsuite/gfortran.dg/graphite/pr42180.f90
+++ b/gcc/testsuite/gfortran.dg/graphite/pr42180.f90
@@ -1,3 +1,5 @@
+! { dg-options "-ffast-math -O2 -fgraphite-identity" }
+
 module mcc_m
   integer, parameter, private :: longreal = selected_real_kind(15,90)
 contains