This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RFA: Fix PR rtl-optimization/20769
- From: Joern RENNECKE <joern dot rennecke at st dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 08 Apr 2005 20:01:08 +0100
- Subject: 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))