8229970: ZGC: C2: fixup_uses_in_catch may fail when expanding many uses
Reviewed-by: kvn, thartmann
This commit is contained in:
parent
67738a72bd
commit
6e3a246c9a
@ -1001,16 +1001,12 @@ static void call_catch_cleanup_one(PhaseIdealLoop* phase, LoadNode* load, Node*
|
|||||||
// Process the loads successor nodes - if any is between
|
// Process the loads successor nodes - if any is between
|
||||||
// the call and the catch blocks, they need to be cloned to.
|
// the call and the catch blocks, they need to be cloned to.
|
||||||
// This is done recursively
|
// This is done recursively
|
||||||
int outcnt = load->outcnt();
|
for (uint i = 0; i < load->outcnt();) {
|
||||||
uint index = 0;
|
Node *n = load->raw_out(i);
|
||||||
for (int i = 0; i < outcnt; i++) {
|
assert(!n->is_LoadBarrier(), "Sanity");
|
||||||
if (index < load->outcnt()) {
|
if (!fixup_uses_in_catch(phase, ctrl, n)) {
|
||||||
Node *n = load->raw_out(index);
|
// if no successor was cloned, progress to next out.
|
||||||
assert(!n->is_LoadBarrier(), "Sanity");
|
i++;
|
||||||
if (!fixup_uses_in_catch(phase, ctrl, n)) {
|
|
||||||
// if no successor was cloned, progress to next out.
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user