Don't expand sdiv by power of two before legalize, since it will likely
authorNate Begeman <natebegeman@mac.com>
Fri, 17 Feb 2006 07:26:20 +0000 (07:26 +0000)
committerNate Begeman <natebegeman@mac.com>
Fri, 17 Feb 2006 07:26:20 +0000 (07:26 +0000)
generate illegal nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26261 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 48bb2024e4dc82228351a5148b0d5085a370c4f0..4d5dcd780e383c82d2e3134eae4206a548292b5a 100644 (file)
@@ -731,8 +731,8 @@ SDOperand DAGCombiner::visitSDIV(SDNode *N) {
   if (TLI.MaskedValueIsZero(N1, SignBit) &&
       TLI.MaskedValueIsZero(N0, SignBit))
     return DAG.getNode(ISD::UDIV, N1.getValueType(), N0, N1);
-  // fold (sdiv X, pow2) -> simple ops.
-  if (N1C && N1C->getValue() && !TLI.isIntDivCheap() && 
+  // fold (sdiv X, pow2) -> simple ops after legalize
+  if (N1C && N1C->getValue() && !TLI.isIntDivCheap() && AfterLegalize &&
       (isPowerOf2_64(N1C->getSignExtended()) || 
        isPowerOf2_64(-N1C->getSignExtended()))) {
     // If dividing by powers of two is cheap, then don't perform the following