summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-06-15 21:38:48 +0000
committerCraig Topper <craig.topper@intel.com>2017-06-15 21:38:48 +0000
commit2ba991ff2c0d7c785a9eae088e18f7e3ce1e4149 (patch)
tree5bc903ee71b87ecfb856099d9434156bc33a65d8 /llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
parentca73ba019bc2d7d6810c6b8a64301bdb6443f032 (diff)
downloadbcm5719-llvm-2ba991ff2c0d7c785a9eae088e18f7e3ce1e4149.tar.gz
bcm5719-llvm-2ba991ff2c0d7c785a9eae088e18f7e3ce1e4149.zip
[InstCombine] Add two FIXMEs for bad single use checks. NFC
llvm-svn: 305510
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
index e4b7903a6e9..8c9acc1147e 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -2111,12 +2111,16 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
}
// (A ^ B) | ((B ^ C) ^ A) -> (A ^ B) | C
+ // FIXME: The two hasOneUse calls here are the same call, maybe we were
+ // supposed to check Op1->operand(0)?
if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
if (match(Op1, m_Xor(m_Xor(m_Specific(B), m_Value(C)), m_Specific(A))))
if (Op1->hasOneUse() || cast<BinaryOperator>(Op1)->hasOneUse())
return BinaryOperator::CreateOr(Op0, C);
// ((A ^ C) ^ B) | (B ^ A) -> (B ^ A) | C
+ // FIXME: The two hasOneUse calls here are the same call, maybe we were
+ // supposed to check Op0->operand(0)?
if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B))))
if (match(Op1, m_Xor(m_Specific(B), m_Specific(A))))
if (Op0->hasOneUse() || cast<BinaryOperator>(Op0)->hasOneUse())
OpenPOWER on IntegriCloud