BlockGenerator: Use getArrayAccessFor for vector code generation
getAccessFor does not guarantee a certain access to be returned in case an instruction is related to multiple accesses. However, in the vector code generation we want to know the stride of the array access of a store instruction. By using getArrayAccessFor we ensure we always get the correct memory access. This patch fixes a potential bug, but I was unable to produce a failing test case. Several existing test cases cover this code, but all of them already passed out of luck (or the specific but not-guaranteed order in which we build memory accesses). llvm-svn: 255715
This commit is contained in:
parent
a69d4f0d83
commit
184a4926b3
|
@ -776,7 +776,7 @@ void VectorBlockGenerator::generateLoad(
|
|||
return;
|
||||
}
|
||||
|
||||
const MemoryAccess &Access = Stmt.getAccessFor(Load);
|
||||
const MemoryAccess &Access = Stmt.getArrayAccessFor(Load);
|
||||
|
||||
// Make sure we have scalar values available to access the pointer to
|
||||
// the data location.
|
||||
|
@ -828,7 +828,7 @@ void VectorBlockGenerator::copyBinaryInst(ScopStmt &Stmt, BinaryOperator *Inst,
|
|||
void VectorBlockGenerator::copyStore(
|
||||
ScopStmt &Stmt, StoreInst *Store, ValueMapT &VectorMap,
|
||||
VectorValueMapT &ScalarMaps, __isl_keep isl_id_to_ast_expr *NewAccesses) {
|
||||
const MemoryAccess &Access = Stmt.getAccessFor(Store);
|
||||
const MemoryAccess &Access = Stmt.getArrayAccessFor(Store);
|
||||
|
||||
auto *Pointer = Store->getPointerOperand();
|
||||
Value *Vector = getVectorValue(Stmt, Store->getValueOperand(), VectorMap,
|
||||
|
|
Loading…
Reference in New Issue