Generalize getInvertibleOperand recurrence handling slightly
authorPhilip Reames <listmail@philipreames.com>
Wed, 28 Apr 2021 21:36:33 +0000 (14:36 -0700)
committerPhilip Reames <listmail@philipreames.com>
Wed, 28 Apr 2021 21:38:07 +0000 (14:38 -0700)
commit0c01b37eeb18a51a7e9c9153330d8009de0f600e
tree6ea04bad5e47344096115a02e05652406c7b3a83
parent29cb9dc4be257fd3afd8245fa421f0716feda5bd
Generalize getInvertibleOperand recurrence handling slightly

Follow up to D99912, specifically the revert, fix, and reapply thereof.

This generalizes the invertible recurrence logic in two ways:
* By allowing mismatching operand numbers of the phi, we can recurse through a pair of phi recurrences whose operand orders have not been canonicalized.
* By allowing recurrences through operand 1, we can invert these odd (but legal) recurrence.

Differential Revision: https://reviews.llvm.org/D100884
llvm/lib/Analysis/ValueTracking.cpp
llvm/test/Analysis/ValueTracking/known-non-equal.ll