diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a7da2148d27b92e0267e53d6a9f4425093dbc7cf..5368a7c169627a3619bb4b285ade5281d7e5a632 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
+
+	PR middle-end/37808
+	* df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
+	sure that ref has valid bb.
+	
 2008-10-12  Richard Henderson  <rth@redhat.com>
 
 	PR middle-end/37447
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index ec0d12edc54061bc9fa8d0c3112643b50808299c..761ba79121ce026ec7ffc95c20b4aa05f136707f 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -1980,7 +1980,8 @@ df_ref_change_reg_with_loc_1 (struct df_reg_info *old_df,
 	    DF_REF_PREV_REG (new_df->reg_chain) = the_ref;
 	  new_df->reg_chain = the_ref;
 	  new_df->n_refs++;
-	  df_set_bb_dirty (DF_REF_BB (the_ref));
+	  if (DF_REF_BB (the_ref))
+	    df_set_bb_dirty (DF_REF_BB (the_ref));
 
 	  /* Need to sort the record again that the ref was in because
 	     the regno is a sorting key.  First, find the right