1. [NFC][sanitizer] Remove unused typedef (details)
  2. [InstCombine] Disable unsafe select transform behind a flag (details)
  3. [ValueTracking] Implement impliesPoison (details)
Commit b4655a0815d0cd75297cfe323526397ee7a03dca by Vitaly Buka
[NFC][sanitizer] Remove unused typedef
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_stacktrace.h
Commit 4a16c507cb68e425226e81598d91963aacdd57ed by nikita.ppv
[InstCombine] Disable unsafe select transform behind a flag

This disables the poison-unsafe select -> and/or transform behind
a flag (we continue to perform the fold by default). This is intended
to simplify evaluation and testing while we teach various passes
to directly recognize the select pattern.

This only disables the main select -> and/or transform. A number of
related ones are instead changed to canonicalize to the a ? b : false
and a ? true : b forms which represent and/or respectively. This
requires a bit of care to avoid infinite loops, as we do not want
!a ? b : false to be converted into a ? false : b.

The basic idea here is the same as D93065, but keeps the change
behind a flag for now.

Differential Revision:
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
The file was addedllvm/test/Transforms/InstCombine/select-and-or.ll
The file was modifiedllvm/include/llvm/Transforms/InstCombine/InstCombiner.h
Commit 0f2c180163a2cc3d6239a32d379ec3d773e56a2f by aqjune
[ValueTracking] Implement impliesPoison

This PR adds impliesPoison(ValAssumedPoison, V) that returns true if V is
poison under the assumption that ValAssumedPoison is poison.

For example, impliesPoison('icmp X, 10', 'icmp X, Y') return true because
'icmp X, Y' is poison if 'icmp X, 10' is poison.

impliesPoison can be used for sound optimization of select, as discussed in

Reviewed By: nikic

Differential Revision:
The file was modifiedllvm/unittests/Analysis/ValueTrackingTest.cpp
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
The file was modifiedllvm/include/llvm/Analysis/ValueTracking.h