From: Chris Lattner Date: Tue, 30 Aug 2005 00:59:16 +0000 (+0000) Subject: The first operand to AND does not always have more than two operands. This X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=15055733f85da5dc9a29e64cc1a2eeda38898f68;p=oota-llvm.git The first operand to AND does not always have more than two operands. This fixes MediaBench/toast with the dag selector git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23141 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index a0af76570a9..f2d65697da7 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -167,7 +167,8 @@ static bool isRotateAndMask(SDNode *N, unsigned Mask, bool IsShiftMask, unsigned Shift = 32; unsigned Indeterminant = ~0; // bit mask marking indeterminant results unsigned Opcode = N->getOpcode(); - if (!isIntImmediate(N->getOperand(1).Val, Shift) || (Shift > 31)) + if (N->getNumOperands() != 2 || + !isIntImmediate(N->getOperand(1).Val, Shift) || (Shift > 31)) return false; if (Opcode == ISD::SHL) {