diff options
author | Nikita Popov <npopov@redhat.com> | 2022-05-17 10:02:50 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-05-17 10:05:12 +0200 |
commit | 2db4dc7ec0595dae4b2fb5499da698eb117e2dc7 (patch) | |
tree | 00844d67d8370d56dea8c2a65619521da0a06bce /llvm/lib/IR/ConstantRange.cpp | |
parent | 821522d343cd127312fb07b53aa99e22b3aacc0c (diff) | |
download | llvm-2db4dc7ec0595dae4b2fb5499da698eb117e2dc7.zip llvm-2db4dc7ec0595dae4b2fb5499da698eb117e2dc7.tar.gz llvm-2db4dc7ec0595dae4b2fb5499da698eb117e2dc7.tar.bz2 |
[ConstantRange] Implement binaryXor() using known bits
This allows us to compute known high bits. It's not optimal, but
better than nothing.
Diffstat (limited to 'llvm/lib/IR/ConstantRange.cpp')
-rw-r--r-- | llvm/lib/IR/ConstantRange.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/IR/ConstantRange.cpp b/llvm/lib/IR/ConstantRange.cpp index 16eb4d0..ce2e537 100644 --- a/llvm/lib/IR/ConstantRange.cpp +++ b/llvm/lib/IR/ConstantRange.cpp @@ -1430,8 +1430,7 @@ ConstantRange ConstantRange::binaryXor(const ConstantRange &Other) const { if (isSingleElement() && getSingleElement()->isAllOnes()) return Other.binaryNot(); - // TODO: replace this with something less conservative - return getFull(); + return fromKnownBits(toKnownBits() ^ Other.toKnownBits(), /*IsSigned*/false); } ConstantRange |