summaryrefslogtreecommitdiff
path: root/gcc/bt-load.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-13 16:56:11 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-13 16:56:11 +0000
commit9732dffb5cb0757535e7cb935997b1201cb13dcb (patch)
tree13100fc3273a13143ae4328a09cbb1accb1ec438 /gcc/bt-load.c
parentb3582e6a89bc272c49fbb3b6f39b7854cad7ef44 (diff)
downloadgcc-9732dffb5cb0757535e7cb935997b1201cb13dcb.tar.gz
PR rtl-optimization/20769:
* bt-load.c (compute_defs_uses_and_gen): Check for the blockage pattern emitted by expand_nl_goto_receiver. PR middle-end/20793: * integrate.c (allocate_initial_values): Update register liveness information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99668 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/bt-load.c')
-rw-r--r--gcc/bt-load.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index c8c94127c66..47ac16a82fb 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -506,6 +506,22 @@ compute_defs_uses_and_gen (fibheap_t all_btr_defs, btr_def *def_array,
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)
+ {
+ 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))