Code refactoring.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 23 Apr 2010 19:10:30 +0000 (19:10 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 23 Apr 2010 19:10:30 +0000 (19:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102202 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index c6796be8f4235df292e8b7bf453c9cefba7c3ac3..e586a23441c6ae85b54b6fa9c67c19e8901ab4c8 100644 (file)
@@ -655,25 +655,26 @@ static SDValue PromoteOperand(SDValue Op, EVT PVT, SelectionDAG &DAG,
   }
 
   unsigned Opc = Op.getOpcode();
-  if (Opc == ISD::AssertSext)
+  switch (Opc) {
+  default: break;
+  case ISD::AssertSext:
     return DAG.getNode(ISD::AssertSext, dl, PVT,
                        SExtPromoteOperand(Op.getOperand(0), PVT, DAG, TLI),
                        Op.getOperand(1));
-  else if (Opc == ISD::AssertZext)
+  case ISD::AssertZext:
     return DAG.getNode(ISD::AssertZext, dl, PVT,
                        ZExtPromoteOperand(Op.getOperand(0), PVT, DAG, TLI),
                        Op.getOperand(1));
-
-  unsigned ExtOpc = ISD::ANY_EXTEND;
-  if (Opc == ISD::Constant)
-    // Zero extend things like i1, sign extend everything else.  It shouldn't
-    // matter in theory which one we pick, but this tends to give better code?
-    // See DAGTypeLegalizer::PromoteIntRes_Constant.
-    ExtOpc =
+  case ISD::Constant: {
+    unsigned ExtOpc =
       Op.getValueType().isByteSized() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND;
-  if (!TLI.isOperationLegal(ExtOpc, PVT))
+    return DAG.getNode(ExtOpc, dl, PVT, Op);
+  }    
+  }
+
+  if (!TLI.isOperationLegal(ISD::ANY_EXTEND, PVT))
     return SDValue();
-  return DAG.getNode(ExtOpc, dl, PVT, Op);
+  return DAG.getNode(ISD::ANY_EXTEND, dl, PVT, Op);
 }
 
 static SDValue SExtPromoteOperand(SDValue Op, EVT PVT, SelectionDAG &DAG,