-
Bug
-
Resolution: Fixed
-
P2
-
8u60, 9
-
b103
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8149243 | 8u101 | Tobias Hartmann | P2 | Resolved | Fixed | b01 |
JDK-8146453 | 8u92 | Tobias Hartmann | P2 | Closed | Fixed | b03 |
JDK-8155339 | emb-8u101 | Tobias Hartmann | P2 | Resolved | Fixed | b01 |
PhaseIdealLoop::is_scaled_iv_plus_offset() returns false if 'exp' is an AddI node with the scaled iv as second input because is_scaled_iv() is only invoked for exp->in(1). We should fix it like this:
--- a/src/share/vm/opto/loopTransform.cpp Fri Dec 18 12:51:19 2015 +0100
+++ b/src/share/vm/opto/loopTransform.cpp Fri Dec 18 12:57:39 2015 +0100
@@ -1913,6 +1913,12 @@
}
return true;
}
+ if (is_scaled_iv(exp->in(2), iv, p_scale)) {
+ if (p_offset != NULL) {
+ *p_offset = exp->in(1);
+ }
+ return true;
+ }
if (exp->in(2)->is_Con()) {
Node* offset2 = NULL;
if (depth < 2 &&
--- a/src/share/vm/opto/loopTransform.cpp Fri Dec 18 12:51:19 2015 +0100
+++ b/src/share/vm/opto/loopTransform.cpp Fri Dec 18 12:57:39 2015 +0100
@@ -1913,6 +1913,12 @@
}
return true;
}
+ if (is_scaled_iv(exp->in(2), iv, p_scale)) {
+ if (p_offset != NULL) {
+ *p_offset = exp->in(1);
+ }
+ return true;
+ }
if (exp->in(2)->is_Con()) {
Node* offset2 = NULL;
if (depth < 2 &&
- backported by
-
JDK-8149243 PhaseIdealLoop::is_scaled_iv_plus_offset() does not match AddI
-
- Resolved
-
-
JDK-8155339 PhaseIdealLoop::is_scaled_iv_plus_offset() does not match AddI
-
- Resolved
-
-
JDK-8146453 PhaseIdealLoop::is_scaled_iv_plus_offset() does not match AddI
-
- Closed
-