src/share/vm/opto/cfgnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/cfgnode.cpp Fri Jan 22 15:00:08 2016
--- new/src/share/vm/opto/cfgnode.cpp Fri Jan 22 15:00:08 2016
*** 1060,1069 ****
--- 1060,1078 ----
}
assert(jt == ft, "");
}
#endif //ASSERT
+ if (l && ((const Node*)l->phi() == this) &&
+ phase->type(l->in(LoopNode::LoopBackControl)) == Type::TOP) {
+ // During CCP, if we saturate the type of a counted loop's Phi
+ // before the special code for counted loop above has a chance to
+ // run (that is as long as the type of the backedge's control is
+ // top), we might end up with non monotonic types
+ return ft;
+ }
+
// Deal with conversion problems found in data loops.
ft = phase->saturate(ft, phase->type_or_null(this), _type);
return ft;
}
src/share/vm/opto/cfgnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File