summaryrefslogtreecommitdiff
path: root/gcc/ra-build.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ra-build.c')
-rw-r--r--gcc/ra-build.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/gcc/ra-build.c b/gcc/ra-build.c
index 130b37606a2..69f6aaa5872 100644
--- a/gcc/ra-build.c
+++ b/gcc/ra-build.c
@@ -1056,17 +1056,21 @@ livethrough_conflicts_bb (basic_block bb)
if (deaths > 0
|| contains_call
|| bitmap_first_set_bit (all_defs) >= 0)
- EXECUTE_IF_SET_IN_BITMAP (info->live_throughout, first, use_id,
- {
- struct web_part *wp = &web_parts[df->def_id + use_id];
- unsigned int bl = rtx_to_bits (DF_REF_REG (wp->ref));
- bitmap conflicts;
- wp = find_web_part (wp);
- wp->spanned_deaths += deaths;
- wp->crosses_call |= contains_call;
- conflicts = get_sub_conflicts (wp, bl);
- bitmap_operation (conflicts, conflicts, all_defs, BITMAP_IOR);
- });
+ {
+ bitmap_iterator bi;
+
+ EXECUTE_IF_SET_IN_BITMAP (info->live_throughout, first, use_id, bi)
+ {
+ struct web_part *wp = &web_parts[df->def_id + use_id];
+ unsigned int bl = rtx_to_bits (DF_REF_REG (wp->ref));
+ bitmap conflicts;
+ wp = find_web_part (wp);
+ wp->spanned_deaths += deaths;
+ wp->crosses_call |= contains_call;
+ conflicts = get_sub_conflicts (wp, bl);
+ bitmap_operation (conflicts, conflicts, all_defs, BITMAP_IOR);
+ }
+ }
BITMAP_XFREE (all_defs);
}
@@ -2191,6 +2195,8 @@ conflicts_between_webs (struct df *df)
{
int j;
struct web *web1 = find_subweb_2 (supweb1, cl->size_word);
+ bitmap_iterator bi;
+
if (have_ignored)
bitmap_operation (cl->conflicts, cl->conflicts, ignore_defs,
BITMAP_AND_COMPL);
@@ -2205,8 +2211,7 @@ conflicts_between_webs (struct df *df)
pass++;
/* Note, that there are only defs in the conflicts bitset. */
- EXECUTE_IF_SET_IN_BITMAP (
- cl->conflicts, 0, j,
+ EXECUTE_IF_SET_IN_BITMAP (cl->conflicts, 0, j, bi)
{
struct web *web2 = def2web[j];
unsigned int id2 = web2->id;
@@ -2215,7 +2220,7 @@ conflicts_between_webs (struct df *df)
pass_cache[id2] = pass;
record_conflict (web1, web2);
}
- });
+ }
}
}