[llvm] Imprecise switch case (PR #82795)
Thomas Symalla via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 27 11:07:29 PST 2024
================
@@ -5967,6 +5986,22 @@ static Value *foldSwitchToSelect(const SwitchCaseResultVectorTy &ResultVector,
// case 20: return 2; ----> %2 = icmp eq i32 %a, 20
// default: return 4; %3 = select i1 %2, i32 2, i32 %1
// }
+
+ if (IsComplexSwitchTransform) {
+ bool IsSizeOkay = true;
+
+ for (int i = 0; i < ResultVector.size(); i++)
+ if (ResultVector[i].second.size() != 1)
+ IsSizeOkay = false;
+
+ if (IsSizeOkay && ResultVector.size() > 2) {
+ Value *FinalSelect =
+ createSelectChain(Condition, DefaultResult, ResultVector, 0, Builder);
+ if (FinalSelect)
----------------
tsymalla wrote:
`createSelectChain` always returns a non-`nullptr` value?
https://github.com/llvm/llvm-project/pull/82795
More information about the llvm-commits
mailing list