-
Enhancement
-
Resolution: Fixed
-
P4
-
11, 12, 13, 14, 15
-
b13
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8243139 | 14.0.2 | Stefan Karlsson | P4 | Resolved | Fixed | b04 |
JDK-8246865 | 13.0.4 | Stefan Karlsson | P4 | Resolved | Fixed | b05 |
JDK-8242371 | 11.0.8-oracle | Stefan Karlsson | P4 | Resolved | Fixed | b03 |
JDK-8242800 | 11.0.8 | Stefan Karlsson | P4 | Resolved | Fixed | b01 |
The predicates are added and exists in the order given by GraphKit::add_predicate.
PhaseIdealLoop::find_predicate searches for them in a different order. This doesn't really matter, but it would be nice if this code were consistent with other code looking for these predicates.
Node* PhaseIdealLoop::find_predicate(Node* entry) {
Node* predicate = NULL;
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
if (UseLoopPredicate) {
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_predicate);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
}
if (UseProfiledLoopPredicate) {
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_profile_predicate);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
}
return NULL;
}
PhaseIdealLoop::find_predicate searches for them in a different order. This doesn't really matter, but it would be nice if this code were consistent with other code looking for these predicates.
Node* PhaseIdealLoop::find_predicate(Node* entry) {
Node* predicate = NULL;
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
if (UseLoopPredicate) {
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_predicate);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
}
if (UseProfiledLoopPredicate) {
predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_profile_predicate);
if (predicate != NULL) { // right pattern that can be used by loop predication
return entry;
}
}
return NULL;
}
- backported by
-
JDK-8242371 Use consistent predicate order in and with PhaseIdealLoop::find_predicate
- Resolved
-
JDK-8242800 Use consistent predicate order in and with PhaseIdealLoop::find_predicate
- Resolved
-
JDK-8243139 Use consistent predicate order in and with PhaseIdealLoop::find_predicate
- Resolved
-
JDK-8246865 Use consistent predicate order in and with PhaseIdealLoop::find_predicate
- Resolved
- relates to
-
JDK-8203197 C2: consider all paths in loop body for loop predication
- Resolved