OSDN Git Service

[InstCombine] Don't fold select(C, Z, binop(select(C, X, Y), W)) -> select(C, Z,...
authorCraig Topper <craig.topper@intel.com>
Wed, 14 Feb 2018 18:08:33 +0000 (18:08 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 14 Feb 2018 18:08:33 +0000 (18:08 +0000)
commit29dc0262dff34e4feb0b9b3560e0c089625fca70
tree22f5b5fc58c4362ff3cc8b63e469af9830cd03f7
parent32d5031a4352fa0ae4362c0fde43f739e3a16cf0
[InstCombine] Don't fold select(C, Z, binop(select(C, X, Y), W)) -> select(C, Z, binop(Y, W)) if the binop is rem or div.

The select may have been preventing a division by zero or INT_MIN/-1 so removing it might not be safe.

Fixes PR36362.

Differential Revision: https://reviews.llvm.org/D43276

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@325148 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineSelect.cpp
test/Transforms/InstCombine/pr36362.ll [new file with mode: 0644]