Fixes a problem in instruction selection with testing whether or not the
authorJoel Jones <joel_k_jones@apple.com>
Tue, 17 Apr 2012 22:23:10 +0000 (22:23 +0000)
committerJoel Jones <joel_k_jones@apple.com>
Tue, 17 Apr 2012 22:23:10 +0000 (22:23 +0000)
commitd16ce17711e8e6231363fe1fd47800570b75d61d
tree64a54a49018988155fc54b5e3bb29515d427310f
parent3f5966b85ea572002bfd0bb2f7c371ed087ae260
Fixes a problem in instruction selection with testing whether or not the
transformation:

(X op C1) ^ C2 --> (X op C1) & ~C2 iff (C1&C2) == C2

should be done.

This change has been tested:
 Using a debug+asserts build:
   on the specific test case that brought this bug to light
   make check-all
   lnt nt
   using this clang to build a release version of clang
 Using the release+asserts clang-with-clang build:
   on the specific test case that brought this bug to light
   make check-all
   lnt nt

Checking in because Evan wants it checked in.  Test case forthcoming after
scrubbing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154955 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/TargetLowering.cpp