< prev index next >

src/share/vm/c1/c1_Canonicalizer.cpp

Print this page
rev 9088 : 8139040: Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux.

*** 637,654 **** const Value l = x->x(); ValueType* lt = l->type(); const Value r = x->y(); ValueType* rt = r->type(); if (l == r && !lt->is_float_kind()) { // pattern: If (a cond a) => simplify to Goto ! BlockBegin* sux; switch (x->cond()) { case If::eql: sux = x->sux_for(true); break; case If::neq: sux = x->sux_for(false); break; case If::lss: sux = x->sux_for(false); break; case If::leq: sux = x->sux_for(true); break; case If::gtr: sux = x->sux_for(false); break; case If::geq: sux = x->sux_for(true); break; } // If is a safepoint then the debug information should come from the state_before of the If. set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux))); return; } --- 637,655 ---- const Value l = x->x(); ValueType* lt = l->type(); const Value r = x->y(); ValueType* rt = r->type(); if (l == r && !lt->is_float_kind()) { // pattern: If (a cond a) => simplify to Goto ! BlockBegin* sux = NULL; switch (x->cond()) { case If::eql: sux = x->sux_for(true); break; case If::neq: sux = x->sux_for(false); break; case If::lss: sux = x->sux_for(false); break; case If::leq: sux = x->sux_for(true); break; case If::gtr: sux = x->sux_for(false); break; case If::geq: sux = x->sux_for(true); break; + default: ShouldNotReachHere(); } // If is a safepoint then the debug information should come from the state_before of the If. set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux))); return; }
*** 682,692 **** // all successors identical => simplify to: Goto set_canonical(new Goto(lss_sux, x->state_before(), x->is_safepoint())); } else { // two successors differ and two successors are the same => simplify to: If (x cmp y) // determine new condition & successors ! If::Condition cond; BlockBegin* tsux = NULL; BlockBegin* fsux = NULL; if (lss_sux == eql_sux) { cond = If::leq; tsux = lss_sux; fsux = gtr_sux; } else if (lss_sux == gtr_sux) { cond = If::neq; tsux = lss_sux; fsux = eql_sux; } else if (eql_sux == gtr_sux) { cond = If::geq; tsux = eql_sux; fsux = lss_sux; } --- 683,693 ---- // all successors identical => simplify to: Goto set_canonical(new Goto(lss_sux, x->state_before(), x->is_safepoint())); } else { // two successors differ and two successors are the same => simplify to: If (x cmp y) // determine new condition & successors ! If::Condition cond = If::eql; BlockBegin* tsux = NULL; BlockBegin* fsux = NULL; if (lss_sux == eql_sux) { cond = If::leq; tsux = lss_sux; fsux = gtr_sux; } else if (lss_sux == gtr_sux) { cond = If::neq; tsux = lss_sux; fsux = eql_sux; } else if (eql_sux == gtr_sux) { cond = If::geq; tsux = eql_sux; fsux = lss_sux; }
< prev index next >