git: 40d5cf3f394d - stable/14 - Merge commit 37b7207651b4 from llvm-project (by zhongyunde@huawei.com):
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 20 Apr 2024 10:32:51 UTC
The branch stable/14 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=40d5cf3f394d72b9c6a9ce69cebd95d168b1fa72 commit 40d5cf3f394d72b9c6a9ce69cebd95d168b1fa72 Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-04-15 16:24:39 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-04-20 10:03:26 +0000 Merge commit 37b7207651b4 from llvm-project (by zhongyunde@huawei.com): [SimplifyCFG] Fix crash when there is unreachable large index (#88616) The large case index out of scope is dead code, but it is still be created for TableContents in SwitchLookupTable::SwitchLookupTable, so make sure the table size after growing should not get smaller. Fix https://github.com/llvm/llvm-project/issues/88607 This should fix "Assertion failed: (idx < size()), function operator[]" when building the science/dynare port. PR: 276104, 278320 Reported by: yuri MFC after: 1 month (cherry picked from commit 514c98ba14a0f590891844d1a6bec0ac4de54489) --- contrib/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index 13eae549b2ce..f95dae1842fe 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -6710,9 +6710,11 @@ static bool SwitchToLookupTable(SwitchInst *SI, IRBuilder<> &Builder, return SwitchLookupTable::WouldFitInRegister( DL, UpperBound, KV.second /* ResultType */); })) { + // There may be some case index larger than the UpperBound (unreachable + // case), so make sure the table size does not get smaller. + TableSize = std::max(UpperBound, TableSize); // The default branch is unreachable after we enlarge the lookup table. // Adjust DefaultIsReachable to reuse code path. - TableSize = UpperBound; DefaultIsReachable = false; } }