diff options
| author | Charlie Turner <charlie.turner@arm.com> | 2015-11-26 20:39:51 +0000 |
|---|---|---|
| committer | Charlie Turner <charlie.turner@arm.com> | 2015-11-26 20:39:51 +0000 |
| commit | 54336a5a4e727f9729b6916f1fa79be9521d5edb (patch) | |
| tree | 44d0af81062e19b27999efbf5ee745b7ae16e78c /llvm/lib/Transforms | |
| parent | a1b8fc3bb49613153e48f81353a172b71343adf8 (diff) | |
| download | bcm5719-llvm-54336a5a4e727f9729b6916f1fa79be9521d5edb.tar.gz bcm5719-llvm-54336a5a4e727f9729b6916f1fa79be9521d5edb.zip | |
[LoopVectorize] Use MapVector rather than DenseMap for MinBWs.
The order in which instructions are truncated in truncateToMinimalBitwidths
effects code generation. Switch to a map with a determinisic order, since the
iteration order over a DenseMap is not defined.
This code is not hot, so the difference in container performance isn't
interesting.
Many thanks to David Blaikie for making me aware of MapVector!
Fixes PR25490.
Differential Revision: http://reviews.llvm.org/D14981
llvm-svn: 254179
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 916872e4382..c956a55a100 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -325,7 +325,7 @@ public: // can be validly truncated to. The cost model has assumed this truncation // will happen when vectorizing. void vectorize(LoopVectorizationLegality *L, - DenseMap<Instruction*,uint64_t> MinimumBitWidths) { + MapVector<Instruction*,uint64_t> MinimumBitWidths) { MinBWs = MinimumBitWidths; Legal = L; // Create a new empty loop. Unlink the old loop and connect the new one. @@ -546,7 +546,7 @@ protected: /// Map of scalar integer values to the smallest bitwidth they can be legally /// represented as. The vector equivalents of these values should be truncated /// to this type. - DenseMap<Instruction*,uint64_t> MinBWs; + MapVector<Instruction*,uint64_t> MinBWs; LoopVectorizationLegality *Legal; // Record whether runtime check is added. @@ -1505,7 +1505,7 @@ public: /// Map of scalar integer values to the smallest bitwidth they can be legally /// represented as. The vector equivalents of these values should be truncated /// to this type. - DenseMap<Instruction*,uint64_t> MinBWs; + MapVector<Instruction*,uint64_t> MinBWs; /// The loop that we evaluate. Loop *TheLoop; |

