This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[dataflow] PATCH COMMITTED: Update lower-subreg for dataflow


On mainline the lower-subreg pass calls update_life_info to
recalculate REG_DEAD notes.  This is incorrect and inappropriate on
dataflow branch, and it was removed a while back.  The effect is that
REG_DEAD or REG_UNUSED notes can remain for registers which were
split.  This can then lead to errors when compiled with
--enable-check=rtl.  This patch removes those notes.

This patch also removes the use of life_blocks, which only existed for
the call to update_life_info which was removed.

Committed to dataflow branch.

Ian


2007-04-23  Ian Lance Taylor  <iant@google.com>

	* lower-subreg.c (resolve_reg_notes): Discard REG_DEAD and
	REG_UNUSED notes for split registers.
	(decompose_multiword_subregs): Remove life_blocks.


Index: lower-subreg.c
===================================================================
--- lower-subreg.c	(revision 124082)
+++ lower-subreg.c	(working copy)
@@ -632,6 +632,8 @@ resolve_reg_notes (rtx insn)
       switch (REG_NOTE_KIND (note))
 	{
 	case REG_NO_CONFLICT:
+	case REG_DEAD:
+	case REG_UNUSED:
 	  if (resolve_reg_p (XEXP (note, 0)))
 	    delete = true;
 	  break;
@@ -1057,7 +1059,6 @@ decompose_multiword_subregs (void)
   if (!bitmap_empty_p (decomposable_context))
     {
       int hold_no_new_pseudos = no_new_pseudos;
-      sbitmap life_blocks;
       sbitmap sub_blocks;
       unsigned int i;
       sbitmap_iterator sbi;
@@ -1067,8 +1068,6 @@ decompose_multiword_subregs (void)
       propagate_pseudo_copies ();
 
       no_new_pseudos = 0;
-      life_blocks = sbitmap_alloc (last_basic_block);
-      sbitmap_zero (life_blocks);
       sub_blocks = sbitmap_alloc (last_basic_block);
       sbitmap_zero (sub_blocks);
 
@@ -1167,9 +1166,6 @@ decompose_multiword_subregs (void)
 		      changed = true;
 		    }
 		}
-
-	      if (changed)
-		SET_BIT (life_blocks, bb->index);
 	    }
 	}
 
@@ -1205,7 +1201,6 @@ decompose_multiword_subregs (void)
 	    }
 	}
 
-      sbitmap_free (life_blocks);
       sbitmap_free (sub_blocks);
     }
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]