src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/loopopts.cpp

src/share/vm/opto/loopopts.cpp

Print this page
rev 10203 : 8149543: range check CastII nodes should not be split through Phi
Summary: splitting range check CastIIs through loop induction Phi prevents further optimizations
Reviewed-by:

*** 45,54 **** --- 45,61 ---- // ConvI2L may have type information on it which is unsafe to push up // so disable this for now return NULL; } + // Splitting range check CastIIs through a loop induction Phi can + // cause new Phis to be created that are left unrelated to the loop + // induction Phi and prevent optimizations (vectorization) + if (n->Opcode() == Op_CastII && n->as_CastII()->has_range_check()) { + return NULL; + } + int wins = 0; assert(!n->is_CFG(), ""); assert(region->is_Region(), ""); const Type* type = n->bottom_type();
src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File