[LVI] run transfer function for binary operator even when the RHS isn't a constant
authorJohn Regehr <regehr@cs.utah.edu>
Wed, 21 Nov 2018 05:24:12 +0000 (05:24 +0000)
committerJohn Regehr <regehr@cs.utah.edu>
Wed, 21 Nov 2018 05:24:12 +0000 (05:24 +0000)
commit3a1c9d55cc40bafe84689e4697576020a43e5a64
treeb726602991a9282d817c86fef69280aeb2dfad6a
parenta676d7ee95751bec76f233a566085eb6f08eb844
[LVI] run transfer function for binary operator even when the RHS isn't a constant

LVI was symbolically executing binary operators only when the RHS was
constant, missing the case where we have a ConstantRange for the RHS,
but not an actual constant. Tested using check-all and by
bootstrapping. Compile time is not impacted measurably.

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

llvm-svn: 347379
llvm/lib/Analysis/LazyValueInfo.cpp
llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll