diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20b13512aaff3a13cff1bf426acb546a6f4ce892..018bb83a3f5ce735dac4ce79e71eca146a204aec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
+
+	* cfgloopanal.c (variable_initial_value): Update the set of altered
+	registers correctly.
+
 2003-06-11  Roger Sayle  <roger@eyesopen.com>
 	    Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
index 88eaa2ce3848790a94e4b69857b57e64e2bdf799..af7d8127cf4311373beaa88d9109296f5175ff9f 100644
--- a/gcc/cfgloopanal.c
+++ b/gcc/cfgloopanal.c
@@ -359,12 +359,12 @@ variable_initial_value (insn, invariant_regs, var, set_insn)
     {
       for (; insn != bb->head; insn = PREV_INSN (insn))
 	{
-	  if (modified_between_p (var, PREV_INSN (insn), NEXT_INSN (insn)))
-	    break;
 	  if (INSN_P (insn))
 	    note_stores (PATTERN (insn),
 		(void (*) PARAMS ((rtx, rtx, void *))) unmark_altered,
 		invariant_regs);
+	  if (modified_between_p (var, PREV_INSN (insn), NEXT_INSN (insn)))
+	    break;
 	}
 
       if (insn != bb->head)