From 7c0bbe0939d255d70834232f845993d8db9b925c Mon Sep 17 00:00:00 2001 From: Nicolas Vasilache Date: Mon, 7 Jan 2019 07:15:13 -0800 Subject: 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 --- mlir/lib/Analysis/VectorAnalysis.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'mlir/lib/Analysis/VectorAnalysis.cpp') 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 dimRemapping, symRemapping; - for (auto kvp : other.dimValueToPosition) { - if (dimRemapping.size() <= kvp.second) - dimRemapping.resize(kvp.second + 1); - dimRemapping[kvp.second] = renumberOneIndex(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(kvp->first); } - for (auto kvp : other.symValueToPosition) { - if (symRemapping.size() <= kvp.second) - symRemapping.resize(kvp.second + 1); - symRemapping[kvp.second] = renumberOneIndex(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(kvp->first); } return other.expr.replaceDimsAndSymbols(dimRemapping, symRemapping); } -- cgit v1.2.3