[InstSimplify] select Cond, true, false --> Cond
authorSanjay Patel <spatel@rotateright.com>
Thu, 9 Jan 2020 14:02:53 +0000 (09:02 -0500)
committerSanjay Patel <spatel@rotateright.com>
Thu, 9 Jan 2020 14:04:20 +0000 (09:04 -0500)
commitf53b38d12a7b9c6754d5bc91483efab935b5c012
tree6775a0911a6c91c3c41785c5161eebe77adab89e
parent173b711e83d7b61a46f55eb44f03ea98f69a1dd6
[InstSimplify] select Cond, true, false --> Cond

This is step 1 of damage control assuming that we need to remove several
over-reaching folds for select-of-booleans because they can cause
miscompiles as shown in D72396.

The scalar case seems obviously safe:
https://rise4fun.com/Alive/jSj

And I don't think there's any danger for vectors either - if the
condition is poisoned, then the select must be poisoned too, so undef
elements don't make any difference.

Differential Revision: https://reviews.llvm.org/D72412
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/test/Transforms/InstSimplify/select.ll