[ConstantRange] Add isWrappedSet() and isUpperSignWrapped()
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 27 Mar 2019 19:12:09 +0000 (19:12 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 27 Mar 2019 19:12:09 +0000 (19:12 +0000)
commit7b4e9a1c7a24ea6b6892dc66ea6c62d3396df066
treef4f2628cba96d93d046e941c2fe3d2abed239809
parentb7e213808c12967dbf9286d9d566a88a23cd20c3
[ConstantRange] Add isWrappedSet() and isUpperSignWrapped()

Split off from D59749. This adds isWrappedSet() and
isUpperSignWrapped() set with the same behavior as isSignWrappedSet()
and isUpperWrapped() for the respectively other domain.

The methods isWrappedSet() and isSignWrappedSet() will not consider
ranges of the form [X, Max] == [X, 0) and [X, SignedMax] == [X, SignedMin)
to be wrapping, while isUpperWrapped() and isUpperSignWrapped() will.

Also replace the checks in getUnsignedMin() and friends with method
calls that implement the same logic.

llvm-svn: 357112
llvm/include/llvm/IR/ConstantRange.h
llvm/lib/IR/ConstantRange.cpp
llvm/unittests/IR/ConstantRangeTest.cpp