@@ -1717,11 +1717,13 @@ void PhaseCCP::analyze() {
// Push root onto worklist
Unique_Node_List worklist;
worklist.push(C->root());
+ DEBUG_ONLY(Unique_Node_List worklist_verify;)
// Pull from worklist; compute new value; push changes out.
// This loop is the meat of CCP.
while( worklist.size() ) {
Node *n = worklist.pop();
+ DEBUG_ONLY(worklist_verify.push(n);)
const Type *t = n->Value(this);
if (t != type(n)) {
assert(ccp_type_widens(t, type(n)), "ccp type must widen");
@@ -1813,6 +1815,21 @@ void PhaseCCP::analyze() {
}
}
}
+#ifdef ASSERT
+ while (worklist_verify.size()) {
+ Node* n = worklist_verify.pop();
+ const Type* told = type(n);
+ const Type* tnew = n->Value(this);
+ if (told != tnew) {
+ told->dump_on(tty);
+ tty->print_cr("");
+ tnew->dump_on(tty);
+ tty->print_cr("");
+ n->dump(1);
+ fatal("missed optimization opportunity");
+ }
+ }
+#endif
}
- relates to
-
JDK-8313672 C2: PhaseCCP does not correctly track analysis dependencies involving shift, convert, and mask
- Resolved
-
JDK-8298484 tools/jdeprscan/tests/jdk/jdeprscan/TestRelease.java failed "assert(!failure) failed: Missed optimization opportunity in PhaseCCP"
- Closed
-
JDK-8273496 Make sure that CCP adds nodes to the IGVN worklist
- Open
-
JDK-8298094 Refactor PhaseCCP and IGVN notification
- Open
-
JDK-8298951 Umbrella: improve CCP and IGVN verification
- Open
-
JDK-8257166 [lworld] CCP fails to optimize FlatArrayCheckNode
- Resolved
-
JDK-8297264 C2: Cast node is not processed again in CCP and keeps a wrong too narrow type which is later replaced by top
- Resolved
-
JDK-8299546 C2: MulLNode::mul_ring() wrongly returns bottom type due to casting errors with large numbers
- Resolved
-
JDK-8306042 C2: failed: Missed optimization opportunity in PhaseCCP (adding LShift->Cast->Add notification)
- Resolved
-
JDK-8288683 C2: And node gets wrong type due to not adding it back to the worklist in CCP
- Closed