From 1453de5aa93c48779e1a5cdedec6e1493f6988eb Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 1 Sep 2006 22:52:28 +0000 Subject: [PATCH] Oops. Bad typo. Without the check of N1.hasOneUse() bad things can happen. Suppose the TokenFactor can reach the Op: [Load chain] ^ | [Load] ^ ^ | | / \- / | / [Op] / ^ ^ | .. | | / | [TokenFactor] | ^ | | | \ / \ / [Store] If we move the Load below the TokenFactor, we would have created a cycle in the DAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30040 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelDAGToDAG.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 3322f8847a0..c5ffb06feec 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -308,8 +308,8 @@ void X86DAGToDAGISel::InstructionSelectPreprocess(SelectionDAG &DAG) { SDOperand N1 = I->getOperand(1); SDOperand N2 = I->getOperand(2); - if (MVT::isFloatingPoint(N1.getValueType()) && - MVT::isVector(N1.getValueType()) && + if (MVT::isFloatingPoint(N1.getValueType()) || + MVT::isVector(N1.getValueType()) || !N1.hasOneUse()) continue; -- 2.34.1