[LoopStrengthReduce] Don't use a DenseSet<int64_t> when we might add any valid int64_...
authorJustin Lebar <jlebar@google.com>
Sat, 5 Nov 2016 16:47:25 +0000 (16:47 +0000)
committerJustin Lebar <jlebar@google.com>
Sat, 5 Nov 2016 16:47:25 +0000 (16:47 +0000)
commit54b0be048e3e449aadf7206efa991ee3419188ac
tree97b913f7630436a86dfe534c5982f375993becd3
parent1af0fc1103591c35cca8048dae9776a6c329ecd1
[LoopStrengthReduce] Don't use a DenseSet<int64_t> when we might add any valid int64_t to the set.

Summary:
SmallSetVector uses DenseSet, but that means we need to reserve some
values for the empty and tombstone keys.

It seems to me we should have a general way to let us store full-range
ints inside of DenseSets, and furthermore that we probably shouldn't
silently let you add ints into DenseSets without explicitly promising
that they're in range.  But that's a battle for another day; for now,
just fix this code, since we currently do something Very Bad when
compiling ffmpeg.

Fixes PR30914.

Reviewers: jeremyhu

Subscribers: llvm-commits, mzolotukhin

Differential Revision: https://reviews.llvm.org/D26323

llvm-svn: 286038
llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
llvm/test/CodeGen/X86/loop-strength-reduce-crash.ll [new file with mode: 0644]