[llvm] [SimplifyCFG] Don't use a mask for lookup tables generated from switches with an unreachable default case (PR #94468)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 7 02:58:14 PDT 2024
================
@@ -6743,8 +6743,25 @@ static bool SwitchToLookupTable(SwitchInst *SI, IRBuilder<> &Builder,
TableSize =
(MaxCaseVal->getValue() - MinCaseVal->getValue()).getLimitedValue() + 1;
+ // If the default destination is unreachable, or if the lookup table covers
+ // all values of the conditional variable, branch directly to the lookup table
+ // BB. Otherwise, check that the condition is within the case range.
+ bool DefaultIsReachable = !SI->defaultDestUndefined();
+
bool TableHasHoles = (NumResults < TableSize);
- bool NeedMask = (TableHasHoles && !HasDefaultResults);
+
+ // If the table has holes but the default destination doesn't produce any
+ // constant results, the lookup table entries corresponding to the holes will
+ // contain undefined values.
+ bool HolesHaveUndefinedResults = (TableHasHoles && !HasDefaultResults);
----------------
nikic wrote:
```suggestion
bool HolesHaveUndefinedResults = TableHasHoles && !HasDefaultResults;
```
https://github.com/llvm/llvm-project/pull/94468
More information about the llvm-commits
mailing list