[llvm] [SimplifyCfg] Add nneg to zext for switch to table conversion (PR #147180)
Andreas Jonson via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 6 08:16:38 PDT 2025
================
@@ -6600,16 +6600,19 @@ Value *SwitchLookupTable::buildLookup(Value *Index, IRBuilder<> &Builder,
}
case ArrayKind: {
Type *IndexTy = DL.getIndexType(Array->getType());
+ auto *ArrayTy = cast<ArrayType>(Array->getValueType());
- if (Index->getType() != IndexTy)
+ if (Index->getType() != IndexTy) {
+ unsigned OldBitWidth = Index->getType()->getIntegerBitWidth();
Index = Builder.CreateZExtOrTrunc(Index, IndexTy);
+ if (auto *Zext = dyn_cast<ZExtInst>(Index))
+ Zext->setNonNeg(isIntN(OldBitWidth, ArrayTy->getNumElements() - 1));
----------------
andjo403 wrote:
change the isIntN to isUIntN also then like:
```suggestion
Zext->setNonNeg(isUIntN(OldBitWidth - 1, ArrayTy->getNumElements() - 1));
```
https://github.com/llvm/llvm-project/pull/147180
More information about the llvm-commits
mailing list