Mon, 11 May 2015 07:44:46 +0200
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");