[ValueTracking] Add a new predicate: isKnownNonEqual()

Description

[ValueTracking] Add a new predicate: isKnownNonEqual()

isKnownNonEqual(A, B) returns true if it can be determined that A != B.

At the moment it only knows two facts, that a non-wrapping add of nonzero to a value cannot be that value:

A + B != A [where B != 0, addition is nsw or nuw]

and that contradictory known bits imply two values are not equal.

This patch also hooks this up to InstSimplify; InstSimplify had a peephole for the first fact but not the second so this teaches InstSimplify a new trick too (alas no measured performance impact!)

Details

Committed
jamesmOct 22 2015, 6:18 AM
Parents
rL251011: [analyzer] Bug identification
Branches
Unknown
Tags
Unknown