diff options
author | Yingwei Zheng <dtcxzyw2333@gmail.com> | 2023-11-18 03:36:09 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-18 03:36:09 +0800 |
commit | be32e39892372d9fe069af6bfb829aa0071176a6 (patch) | |
tree | 4a93c363d631e2e07c00795e16df2cdcf09d6edb /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 4db99c8b541592729cc0f8b2d1918bcb8c45f99f (diff) | |
download | llvm-be32e39892372d9fe069af6bfb829aa0071176a6.zip llvm-be32e39892372d9fe069af6bfb829aa0071176a6.tar.gz llvm-be32e39892372d9fe069af6bfb829aa0071176a6.tar.bz2 |
[ValueTracking] Ignore poison values in `computeKnownBits` (#72683)
This patch handles `poison` elements of non-splat vectors in
`computeKnownBits`. It addresses test changes after I delete the
duplicate logic in https://github.com/llvm/llvm-project/pull/72535.
See also @nikic's comment:
https://github.com/llvm/llvm-project/pull/72535#pullrequestreview-1736991557
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index e25aa9c..d1af0ea 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -1836,6 +1836,8 @@ void computeKnownBits(const Value *V, const APInt &DemandedElts, if (!DemandedElts[i]) continue; Constant *Element = CV->getAggregateElement(i); + if (isa<PoisonValue>(Element)) + continue; auto *ElementCI = dyn_cast_or_null<ConstantInt>(Element); if (!ElementCI) { Known.resetAll(); |