From ec679a8b3bbf5ac0f9dd71df3fbc6d6985af03a9 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Fri, 24 Apr 2015 16:53:55 +0000 Subject: Switch lowering: fix APInt overflow causing infinite loop / OOM llvm-svn: 235729 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'llvm/lib/CodeGen/SelectionDAG') diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 14421834a55..01419cf8fa1 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -7236,7 +7236,8 @@ bool SelectionDAGBuilder::buildJumpTable(CaseClusterVector &Clusters, for (uint64_t J = 0; J < Gap; J++) Table.push_back(DefaultMBB); } - for (APInt X = Low; X.sle(High); ++X) + uint64_t ClusterSize = (High - Low).getLimitedValue() + 1; + for (uint64_t J = 0; J < ClusterSize; ++J) Table.push_back(Clusters[I].MBB); JTWeights[Clusters[I].MBB] += Clusters[I].Weight; } -- cgit v1.2.3