OSDN Git Service

[LVI] Apply transfer rule for overdefine inputs for binary operators
authorPhilip Reames <listmail@philipreames.com>
Tue, 26 Apr 2016 23:10:35 +0000 (23:10 +0000)
committerPhilip Reames <listmail@philipreames.com>
Tue, 26 Apr 2016 23:10:35 +0000 (23:10 +0000)
commit5fcdfef1452b9b21a0ff3af88ac69d33704941f1
treee3d32ce0ffa2788f7276a909747b993d09636337
parentab87c34c6ab05842dd6d7f5ec482e05edee97e17
[LVI] Apply transfer rule for overdefine inputs for binary operators

As pointed out by John Regehr over in http://reviews.llvm.org/D19485, LVI was being incredibly stupid about applying its transfer rules.  Rather than gathering local facts from the expression itself, it was simply giving up entirely if one of the inputs was overdefined.  This greatly impacts the precision of the overall analysis and makes it far more fragile as well.

This patch builds on 267609 which did the same thing for unary casts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267620 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/LazyValueInfo.cpp
test/Transforms/CorrelatedValuePropagation/basic.ll