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]

RFA: Fix PR rtl-optimization/20769


bootstrapped & regtested on i686-pc-linux-gnu.
2005-04-08  J"orn Rennecke <joern.rennecke@st.com>

	PR rtl-optimization/20769:
	* bt-load.c (compute_defs_uses_and_gen): Check for the blockage
	pattern emitted by expand_nl_goto_receiver.

Index: bt-load.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/bt-load.c,v
retrieving revision 2.32
retrieving revision 2.32.10.1
diff -p -r2.32 -r2.32.10.1
*** bt-load.c	17 Feb 2005 22:41:31 -0000	2.32
--- bt-load.c	8 Apr 2005 18:27:48 -0000	2.32.10.1
*************** compute_defs_uses_and_gen (fibheap_t all
*** 506,511 ****
--- 506,528 ----
  		  SET_BIT (btr_defset[regno - first_btr], insn_uid);
  		  note_other_use_this_block (regno, info.users_this_bb);
  		}
+ 	      /* Check for the blockage emitted by expand_nl_goto_receiver.  */
+ 	      else if (current_function_has_nonlocal_label
+ 		       && GET_CODE (PATTERN (insn)) == ASM_INPUT
+ 		       && *XSTR (PATTERN (insn), 0) == 0)
+ 		{
+ 		  btr_user user;
+ 
+ 		  /* Do the equivalent of calling note_other_use_this_block
+ 		     for every target register.  */
+ 		  for (user = info.users_this_bb; user != NULL;
+ 		       user = user->next)
+ 		    if (user->use)
+ 		      user->other_use_this_block = 1;
+ 		  IOR_HARD_REG_SET (info.btrs_written_in_block, all_btrs);
+ 		  IOR_HARD_REG_SET (info.btrs_live_in_block, all_btrs);
+ 		  sbitmap_zero (info.bb_gen);
+ 		}
  	      else
  		{
  		  if (btr_referenced_p (PATTERN (insn), NULL))

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