diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f078ad499bdd6de1c3db84f538ed01d9bb150449..31fad7db1a1c5858aefaeec23fa32fbaa5d1ee69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Sep  4 10:43:24 CEST 2003  Jan Hubicka  <jh@suse.cz>
+
+	* toplev.c (wrapup_global_declarations): Fix final pass in
+	unit-at-atime mode.
+
 2003-09-04  Mark Mitchell  <mark@codesourcery.com>
 
 	* doc/extend.texi: Document removal of cast-as-lvalue extension in
diff --git a/gcc/toplev.c b/gcc/toplev.c
index b98538568e3037728ecf97f1711806c070fe05cc..b7d23b2ee438fea40a1ab330315ccec1aa266be2 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1571,7 +1571,7 @@ wrapup_global_declarations (tree *vec, int len)
 	      if (flag_unit_at_a_time
 		  && cgraph_varpool_node (decl)->finalized)
 		needed = 0;
-	      else if (flag_unit_at_a_time
+	      else if ((flag_unit_at_a_time && !cgraph_global_info_ready)
 		       && (TREE_USED (decl)
 			   || TREE_USED (DECL_ASSEMBLER_NAME (decl))))
 		/* needed */;