[ConstantRange] Fix the early out in ConstantRange::multiply for positive numbers...
authorCraig Topper <craig.topper@gmail.com>
Wed, 10 May 2017 20:01:48 +0000 (20:01 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 10 May 2017 20:01:48 +0000 (20:01 +0000)
commitc51d05369a4f4aa7cd9580f095e915cd53cff223
tree1f3385e1da410b457cff40c9c7b3fb8949fd1032
parentef0114c4f0a1612cdafb71711cafda0653afebde
[ConstantRange] Fix the early out in ConstantRange::multiply for positive numbers to really do what the comment says

r271020 added an early out to skip the signed multiply portion of ConstantRange::multiply. The comment says we don't need to do signed multiply if the range is only positive numbers, but the implemented check only ensures that the start of the range is positive. It doesn't look at the end of the range.

This patch checks the end of the range instead. Because Upper is one more than the end we have to see if its positive or if its one past the last positive number.

llvm-svn: 302717
llvm/lib/IR/ConstantRange.cpp
llvm/unittests/IR/ConstantRangeTest.cpp