diff options
author | Kai Luo <lkail@cn.ibm.com> | 2020-12-29 12:11:55 +0000 |
---|---|---|
committer | Kai Luo <lkail@cn.ibm.com> | 2020-12-30 02:00:47 +0000 |
commit | f904d50c29f23510cdbae0579085ae7ffebc1f63 (patch) | |
tree | cb5fb8df587766e7e6472fce5c37d40ac5b77fae /llvm/lib/Transforms/Utils/LowerInvoke.cpp | |
parent | 5efc71e119d4eba235209d262e7d171361a0b9be (diff) | |
download | llvm-f904d50c29f23510cdbae0579085ae7ffebc1f63.zip llvm-f904d50c29f23510cdbae0579085ae7ffebc1f63.tar.gz llvm-f904d50c29f23510cdbae0579085ae7ffebc1f63.tar.bz2 |
[PowerPC] Remaining KnownBits should be constant when performing non-sign comparison
In `PPCTargetLowering::DAGCombineTruncBoolExt`, when checking if it's correct to perform the transformation for non-sign comparison, as the comment says
```
// This is neither a signed nor an unsigned comparison, just make sure
// that the high bits are equal.
```
Origin check
```
if (Op1Known.Zero != Op2Known.Zero || Op1Known.One != Op2Known.One)
return SDValue();
```
is not strong enough. For example,
```
Op1Known = 111x000x;
Op2Known = 111x000x;
```
Bit 4, besides bit 0, is still unknown and affects the final result.
This patch fixes https://bugs.llvm.org/show_bug.cgi?id=48388.
Reviewed By: nemanjai, #powerpc
Differential Revision: https://reviews.llvm.org/D93092
Diffstat (limited to 'llvm/lib/Transforms/Utils/LowerInvoke.cpp')
0 files changed, 0 insertions, 0 deletions