summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-06-23 05:41:35 +0000
committerCraig Topper <craig.topper@intel.com>2017-06-23 05:41:35 +0000
commit2c20c42cb6b7383d041631e05c74a4f882c78b8a (patch)
tree78847c5dcc7e699f7c6eda67654d58f8f9667872 /clang/lib/Frontend/CompilerInvocation.cpp
parent79279961403938b65c7756fc3ea8ee99efda7a37 (diff)
downloadbcm5719-llvm-2c20c42cb6b7383d041631e05c74a4f882c78b8a.tar.gz
bcm5719-llvm-2c20c42cb6b7383d041631e05c74a4f882c78b8a.zip
[JumpThreading] Teach jump threading how to analyze (and (cmp A, C1), (cmp A, C2)) after InstCombine has turned it into (cmp (add A, C3), C4)
Currently JumpThreading can use LazyValueInfo to analyze an 'and' or 'or' of compare if the compare is fed by a livein of a basic block. This can be used to to prove the condition can't be met for some predecessor and the jump from that predecessor can be moved to the false path of the condition. But if the compare is something that InstCombine turns into an add and a single compare, it can't be analyzed because the livein is now an input to the add and not the compare. This patch adds a new method to LVI to get a ConstantRange on an edge. Then we teach jump threading to detect the add livein feeding a compare and to get the ConstantRange and propagate it. Differential Revision: https://reviews.llvm.org/D33262 llvm-svn: 306085
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud