OSDN Git Service

[InstCombine] Fold Select with AND/OR condition
authorDavid Bolvansky <david.bolvansky@gmail.com>
Sat, 28 Jul 2018 06:55:51 +0000 (06:55 +0000)
committerDavid Bolvansky <david.bolvansky@gmail.com>
Sat, 28 Jul 2018 06:55:51 +0000 (06:55 +0000)
commitcf073c23aa246c385e1ae12b44ff0a3d1d88647e
tree944c3cc0885a936266f7807ff6b57ce808383269
parent840922e2b4a01a22cadb46f6d9a94ba90c0f304e
[InstCombine] Fold Select with AND/OR condition

Summary:
Fold
```
%A = icmp ne i8 %X, %V1
%B = icmp ne i8 %X, %V2
%C = or i1 %A, %B
%D = select i1 %C, i8 %X, i8 %V1
ret i8 %D
  =>
ret i8 %X

Fixes https://bugs.llvm.org/show_bug.cgi?id=38334
Proof: https://rise4fun.com/Alive/plI8

Reviewers: spatel, lebedev.ri

Reviewed By: lebedev.ri

Subscribers: craig.topper, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338191 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/InstructionSimplify.cpp
test/Transforms/InstCombine/select-and-cmp.ll
test/Transforms/InstCombine/select-or-cmp.ll