Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/superword.cpp @ 23014:84d55f179e24
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
author | thartmann |
---|---|
date | Mon, 11 May 2015 07:44:46 +0200 |
parents | a1b5fe34c604 |
children | 95dbbc0431d9 |
comparison
equal
deleted
inserted
replaced
23013:a1b5fe34c604 | 23014:84d55f179e24 |
---|---|
2247 assert(!valid(), "too complex"); | 2247 assert(!valid(), "too complex"); |
2248 return; | 2248 return; |
2249 } | 2249 } |
2250 // Match AddP(base, AddP(ptr, k*iv [+ invariant]), constant) | 2250 // Match AddP(base, AddP(ptr, k*iv [+ invariant]), constant) |
2251 Node* base = adr->in(AddPNode::Base); | 2251 Node* base = adr->in(AddPNode::Base); |
2252 // The base address should be loop invariant | |
2253 if (!invariant(base)) { | |
2254 assert(!valid(), "base address is loop variant"); | |
2255 return; | |
2256 } | |
2252 //unsafe reference could not be aligned appropriately without runtime checking | 2257 //unsafe reference could not be aligned appropriately without runtime checking |
2253 if (base == NULL || base->bottom_type() == Type::TOP) { | 2258 if (base == NULL || base->bottom_type() == Type::TOP) { |
2254 assert(!valid(), "unsafe access"); | 2259 assert(!valid(), "unsafe access"); |
2255 return; | 2260 return; |
2256 } | 2261 } |