diff options
| author | Nicolas Vasilache <ntv@google.com> | 2019-01-07 07:15:13 -0800 |
|---|---|---|
| committer | jpienaar <jpienaar@google.com> | 2019-03-29 14:59:37 -0700 |
| commit | 7c0bbe0939d255d70834232f845993d8db9b925c (patch) | |
| tree | deae8979309ed90ae70b53fe8ee368eca36b5ac0 /mlir/lib/Analysis/VectorAnalysis.cpp | |
| parent | c47ed53211030afa52d10a497ba42ff29b3a1e7d (diff) | |
| download | bcm5719-llvm-7c0bbe0939d255d70834232f845993d8db9b925c.tar.gz bcm5719-llvm-7c0bbe0939d255d70834232f845993d8db9b925c.zip | |
Iterate on vector rather than DenseMap during AffineMap normalization
This CL removes a flakyness associated to a spurious iteration on DenseMap
iterators when normalizing AffineMap.
PiperOrigin-RevId: 228160074
Diffstat (limited to 'mlir/lib/Analysis/VectorAnalysis.cpp')
| -rw-r--r-- | mlir/lib/Analysis/VectorAnalysis.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/mlir/lib/Analysis/VectorAnalysis.cpp b/mlir/lib/Analysis/VectorAnalysis.cpp index bb81148c2fd..ede73658ac0 100644 --- a/mlir/lib/Analysis/VectorAnalysis.cpp +++ b/mlir/lib/Analysis/VectorAnalysis.cpp @@ -344,15 +344,17 @@ DimOrSymbol SingleResultAffineNormalizer::renumberOneIndex(Value *v) { AffineExpr SingleResultAffineNormalizer::renumber( const SingleResultAffineNormalizer &other) { SmallVector<AffineExpr, 8> dimRemapping, symRemapping; - for (auto kvp : other.dimValueToPosition) { - if (dimRemapping.size() <= kvp.second) - dimRemapping.resize(kvp.second + 1); - dimRemapping[kvp.second] = renumberOneIndex<AffineDimExpr>(kvp.first); + for (auto *v : other.reorderedDims) { + auto kvp = other.dimValueToPosition.find(v); + if (dimRemapping.size() <= kvp->second) + dimRemapping.resize(kvp->second + 1); + dimRemapping[kvp->second] = renumberOneIndex<AffineDimExpr>(kvp->first); } - for (auto kvp : other.symValueToPosition) { - if (symRemapping.size() <= kvp.second) - symRemapping.resize(kvp.second + 1); - symRemapping[kvp.second] = renumberOneIndex<AffineSymbolExpr>(kvp.first); + for (auto *v : other.reorderedSymbols) { + auto kvp = other.symValueToPosition.find(v); + if (symRemapping.size() <= kvp->second) + symRemapping.resize(kvp->second + 1); + symRemapping[kvp->second] = renumberOneIndex<AffineSymbolExpr>(kvp->first); } return other.expr.replaceDimsAndSymbols(dimRemapping, symRemapping); } |

