OSDN Git Service

Use a logical not when inverting SetCC. This unfortunately doesn't fire on any targe...
authorPete Cooper <peter_cooper@apple.com>
Mon, 12 May 2014 23:26:58 +0000 (23:26 +0000)
committerPete Cooper <peter_cooper@apple.com>
Mon, 12 May 2014 23:26:58 +0000 (23:26 +0000)
commit5a5a0640d8654558eb49fd485a124a4e4e52e494
tree265d9ba2767d934975cfcf02e9b8344d41f23e99
parent73282018a19a0a4d4fc8ac44d6a2040dc05fcadb
Use a logical not when inverting SetCC.  This unfortunately doesn't fire on any targets so I couldn't find a test case to trigger it.

The problem occurs when a non-i1 setcc is inverted.  For example 'i8 = setcc' will get 'xor 0xff' to invert this.   This is clearly wrong when the boolean contents are ZeroOrOne.

This patch introduces getLogicalNOT and updates SetCC legalisation to use it.

Reviewed by Hal Finkel.

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