[PATCH] D69686: [LVI][CVP] Use block value in getPredicateAt()

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 5 02:41:34 PST 2019


nikic marked an inline comment as done.
nikic added a comment.

@lebedev.ri Weirdly that does not match the results I get:

  correlated-value-propagation.NumAShrs | 199 | 425
  correlated-value-propagation.NumAddNSW | 1975 | 2056
  correlated-value-propagation.NumAddNUW | 4156 | 4173
  correlated-value-propagation.NumAddNW | 6131 | 6229
  correlated-value-propagation.NumAnd | 194 | 204
  correlated-value-propagation.NumCmps | 809 | 933
  correlated-value-propagation.NumDeadCases | 110 | 114
  correlated-value-propagation.NumMulNSW | 131 | 129
  correlated-value-propagation.NumMulNUW | 832 | 830
  correlated-value-propagation.NumMulNW | 963 | 959
  correlated-value-propagation.NumNSW | 3781 | 3850
  correlated-value-propagation.NumNUW | 7737 | 7745
  correlated-value-propagation.NumNW | 11518 | 11595
  correlated-value-propagation.NumOverflows | 7 | 4
  correlated-value-propagation.NumPhiCommon | 393 | 393
  correlated-value-propagation.NumPhis | 11375 | 11442
  correlated-value-propagation.NumSDivs | 201 | 295
  correlated-value-propagation.NumSExt | 3667 | 4602
  correlated-value-propagation.NumSRems | 28 | 47
  correlated-value-propagation.NumSelects | 25 | 25
  correlated-value-propagation.NumShlNSW | 1082 | 1069
  correlated-value-propagation.NumShlNUW | 2262 | 2251
  correlated-value-propagation.NumShlNW | 3344 | 3320
  correlated-value-propagation.NumSubNSW | 593 | 596
  correlated-value-propagation.NumSubNUW | 487 | 491
  correlated-value-propagation.NumSubNW | 1080 | 1087
  correlated-value-propagation.NumUDivs | 189 | 211

I ran this together with a second patch to CVP which actually computes the icmp result for non-local values, which I was planning to submit as a followup. I don't think that part should impact the NSW deductions though.



================
Comment at: llvm/lib/Analysis/LazyValueInfo.cpp:1869-1871
+  ValueLatticeElement Result = V->getType()->isPointerTy()
+    ? getImpl(PImpl, AC, &DL, DT).getValueAt(V, CxtI)
+    : getImpl(PImpl, AC, &DL, DT).getValueInBlock(V, CxtI->getParent(), CxtI);
----------------
lebedev.ri wrote:
> Should we be getting both, and combining their knowledge somehow?
getValueInBlock() is strictly more powerful, so that should not be necessary.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69686/new/

https://reviews.llvm.org/D69686





More information about the llvm-commits mailing list