From 2cfd6746ae4ab9dbfc25b025bc3e8bccddc47475 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 8 May 2006 17:29:49 +0000 Subject: [PATCH] Fold shifts with undef operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28167 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 60a749df2f7..ca123f497e5 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -1439,11 +1439,14 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, case ISD::FSUB: case ISD::FDIV: case ISD::FREM: + case ISD::SRA: return N1; // fold op(undef, arg2) -> undef case ISD::UDIV: case ISD::SDIV: case ISD::UREM: case ISD::SREM: + case ISD::SRL: + case ISD::SHL: return getConstant(0, VT); // fold op(undef, arg2) -> 0 } } @@ -1467,9 +1470,13 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, return N2; // fold op(arg1, undef) -> undef case ISD::MUL: case ISD::AND: + case ISD::SRL: + case ISD::SHL: return getConstant(0, VT); // fold op(arg1, undef) -> 0 case ISD::OR: return getConstant(MVT::getIntVTBitMask(VT), VT); + case ISD::SRA: + return N1; } } -- 2.34.1