]> granicus.if.org Git - llvm/commit
Merging r348444:
authorTom Stellard <tstellar@redhat.com>
Fri, 7 Dec 2018 20:42:27 +0000 (20:42 +0000)
committerTom Stellard <tstellar@redhat.com>
Fri, 7 Dec 2018 20:42:27 +0000 (20:42 +0000)
commitcd98f42d0747826062fc3d2d2fad383aedf58dd6
tree4e591fe4c91414c0d5009281ba6617987005cef7
parent4a684f7170a0907f83398cf0cb21a24ce7eda0c9
Merging r348444:

------------------------------------------------------------------------
r348444 | matze | 2018-12-05 17:40:23 -0800 (Wed, 05 Dec 2018) | 15 lines

AArch64: Fix invalid CCMP emission

The code emitting AND-subtrees used to check whether any of the operands
was an OR in order to figure out if the result needs to be negated.
However the OR could be hidden in further subtrees and not immediately
visible.

Change the code so that canEmitConjunction() determines whether the
result of the generated subtree needs to be negated. Cleanup emission
logic to use this. I also changed the code a bit to make all negation
decisions early before we actually emit the subtrees.

This fixes http://llvm.org/PR39550

Differential Revision: https://reviews.llvm.org/D54137
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_70@348642 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelLowering.cpp
test/CodeGen/AArch64/arm64-ccmp.ll