SimplifyCFG: Ranges can be larger than 64 bits. Fixes Release-selfhost build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122054 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer 2010-12-17 10:48:14 +00:00
parent 23dcd00ede
commit 14c0987bd9
2 changed files with 21 additions and 1 deletions

View File

@ -324,7 +324,7 @@ GatherConstantCompares(Value *V, std::vector<ConstantInt*> &Vals, Value *&Extra,
Span = Span.inverse();
// If there are a ton of values, we don't want to make a ginormous switch.
if (Span.getSetSize().getZExtValue() > 8 || Span.isEmptySet() ||
if (Span.getSetSize().ugt(8) || Span.isEmptySet() ||
// We don't handle wrapped sets yet.
Span.isWrappedSet())
return 0;

View File

@ -421,3 +421,23 @@ if.end: ; preds = %if.then, %lor.lhs.f
; CHECK: ]
}
; Don't crash on ginormous ranges.
define void @test15(i128 %x) nounwind {
%cmp = icmp ugt i128 %x, 2
br i1 %cmp, label %if.end, label %lor.false
lor.false:
%cmp2 = icmp ne i128 %x, 100000000000000000000
br i1 %cmp2, label %if.end, label %if.then
if.then:
call void @foo1() noredzone
br label %if.end
if.end:
ret void
; CHECK: @test15
; CHECK-NOT: switch
; CHECK: ret void
}