From 60da2fdb6fca92e8e39fd5cf5f6824a64a9e4a82 Mon Sep 17 00:00:00 2001 From: Tobias Hartmann Date: Mon, 21 Dec 2015 10:14:26 +0100 Subject: [PATCH] 8145754: PhaseIdealLoop::is_scaled_iv_plus_offset() does not match AddI Is_scaled_iv_plus_offset() should handle AddI nodes with scaled iv as second input. Reviewed-by: kvn --- hotspot/src/share/vm/opto/loopTransform.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hotspot/src/share/vm/opto/loopTransform.cpp b/hotspot/src/share/vm/opto/loopTransform.cpp index 41ebaffc838..d1bfb801b67 100644 --- a/hotspot/src/share/vm/opto/loopTransform.cpp +++ b/hotspot/src/share/vm/opto/loopTransform.cpp @@ -1911,6 +1911,12 @@ bool PhaseIdealLoop::is_scaled_iv_plus_offset(Node* exp, Node* iv, int* p_scale, } 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 &&