diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aee4e04ce5665b857b02bf07985f0f027054f5d4..88fcb16da45c38e22c8ee301de066e72dad0b835 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
 2013-02-27  Jakub Jelinek  <jakub@redhat.com>
 
+	PR middle-end/56461
+	* ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of
+	FOR_EACH_DEFINED_FUNCTION when freeing state.
+
 	PR middle-end/56461
 	* df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before
 	pool_free.
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 07ba90fa19b4ea8dcb4c1be501aa080a735d2753..94c7315c1244ebdc5546b5eecca7db37d86537f8 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -1479,7 +1479,7 @@ propagate (void)
   propagate_pure_const ();
 
   /* Cleanup. */
-  FOR_EACH_DEFINED_FUNCTION (node)
+  FOR_EACH_FUNCTION (node)
     if (has_function_state (node))
       free (get_function_state (node));
   funct_state_vec.release ();