8079343: Crash in PhaseIdealLoop with "assert(!had_error) failed: bad dominance"

Mon, 11 May 2015 07:44:46 +0200

author
thartmann
date
Mon, 11 May 2015 07:44:46 +0200
changeset 7818
84d55f179e24
parent 7817
a1b5fe34c604
child 7819
95dbbc0431d9

8079343: Crash in PhaseIdealLoop with "assert(!had_error) failed: bad dominance"
Summary: C2 should not try to vectorize loops with loop variant vector base address.
Reviewed-by: kvn

src/share/vm/opto/superword.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/opto/superword.cpp	Thu Apr 02 17:16:39 2015 -0700
     1.2 +++ b/src/share/vm/opto/superword.cpp	Mon May 11 07:44:46 2015 +0200
     1.3 @@ -2249,6 +2249,11 @@
     1.4    }
     1.5    // Match AddP(base, AddP(ptr, k*iv [+ invariant]), constant)
     1.6    Node* base = adr->in(AddPNode::Base);
     1.7 +  // The base address should be loop invariant
     1.8 +  if (!invariant(base)) {
     1.9 +    assert(!valid(), "base address is loop variant");
    1.10 +    return;
    1.11 +  }
    1.12    //unsafe reference could not be aligned appropriately without runtime checking
    1.13    if (base == NULL || base->bottom_type() == Type::TOP) {
    1.14      assert(!valid(), "unsafe access");

mercurial