Legalizer optimize a pair of div / mod to a call to divrem libcall if they are
[oota-llvm.git] / lib / CodeGen / SelectionDAG / LegalizeDAG.cpp
index bb4f365b21649203805e3b655cf499bc463d3398..2ec129f73085b68d202aef7abf21ddffe58e3189 100644 (file)
@@ -3153,6 +3153,8 @@ void SelectionDAGLegalize::ExpandNode(SDNode *Node) {
     Tmp3 = Node->getOperand(1);
     if (TLI.isOperationLegalOrCustom(DivRemOpc, VT) ||
         (isDivRemLibcallAvailable(Node, isSigned, TLI) &&
+         // If div is legal, it's better to do the normal expansion
+         !TLI.isOperationLegalOrCustom(DivOpc, Node->getValueType(0)) &&
          useDivRem(Node, isSigned, false))) {
       Tmp1 = DAG.getNode(DivRemOpc, dl, VTs, Tmp2, Tmp3).getValue(1);
     } else if (TLI.isOperationLegalOrCustom(DivOpc, VT)) {