[X86] Remove dead code from combineStore.
Leftovers from before we switched to widening legalization. Fixes PR43919.
This commit is contained in:
		
							parent
							
								
									79c89033fd
								
							
						
					
					
						commit
						1c8460d6e1
					
				| 
						 | 
				
			
			@ -40768,54 +40768,20 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
 | 
			
		|||
    if (!ISD::isNormalLoad(Ld))
 | 
			
		||||
      return SDValue();
 | 
			
		||||
 | 
			
		||||
    // If this is not the MMX case, i.e. we are just turning i64 load/store
 | 
			
		||||
    // into f64 load/store, avoid the transformation if there are multiple
 | 
			
		||||
    // uses of the loaded value.
 | 
			
		||||
    if (!VT.isVector() && !Ld->hasNUsesOfValue(1, 0))
 | 
			
		||||
    // Avoid the transformation if there are multiple uses of the loaded value.
 | 
			
		||||
    if (!Ld->hasNUsesOfValue(1, 0))
 | 
			
		||||
      return SDValue();
 | 
			
		||||
 | 
			
		||||
    SDLoc LdDL(Ld);
 | 
			
		||||
    SDLoc StDL(N);
 | 
			
		||||
    // If we are a 64-bit capable x86, lower to a single movq load/store pair.
 | 
			
		||||
    // Otherwise, if it's legal to use f64 SSE instructions, use f64 load/store
 | 
			
		||||
    // pair instead.
 | 
			
		||||
    if (Subtarget.is64Bit() || F64IsLegal) {
 | 
			
		||||
      MVT LdVT = Subtarget.is64Bit() ? MVT::i64 : MVT::f64;
 | 
			
		||||
      SDValue NewLd = DAG.getLoad(LdVT, LdDL, Ld->getChain(), Ld->getBasePtr(),
 | 
			
		||||
                                  Ld->getMemOperand());
 | 
			
		||||
    // Lower to a single movq load/store pair.
 | 
			
		||||
    SDValue NewLd = DAG.getLoad(MVT::f64, LdDL, Ld->getChain(),
 | 
			
		||||
                                Ld->getBasePtr(), Ld->getMemOperand());
 | 
			
		||||
 | 
			
		||||
      // Make sure new load is placed in same chain order.
 | 
			
		||||
      DAG.makeEquivalentMemoryOrdering(Ld, NewLd);
 | 
			
		||||
      return DAG.getStore(St->getChain(), StDL, NewLd, St->getBasePtr(),
 | 
			
		||||
                          St->getMemOperand());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Otherwise, lower to two pairs of 32-bit loads / stores.
 | 
			
		||||
    SDValue LoAddr = Ld->getBasePtr();
 | 
			
		||||
    SDValue HiAddr = DAG.getMemBasePlusOffset(LoAddr, 4, LdDL);
 | 
			
		||||
 | 
			
		||||
    SDValue LoLd = DAG.getLoad(MVT::i32, LdDL, Ld->getChain(), LoAddr,
 | 
			
		||||
                               Ld->getPointerInfo(), Ld->getAlignment(),
 | 
			
		||||
                               Ld->getMemOperand()->getFlags());
 | 
			
		||||
    SDValue HiLd = DAG.getLoad(MVT::i32, LdDL, Ld->getChain(), HiAddr,
 | 
			
		||||
                               Ld->getPointerInfo().getWithOffset(4),
 | 
			
		||||
                               MinAlign(Ld->getAlignment(), 4),
 | 
			
		||||
                               Ld->getMemOperand()->getFlags());
 | 
			
		||||
    // Make sure new loads are placed in same chain order.
 | 
			
		||||
    DAG.makeEquivalentMemoryOrdering(Ld, LoLd);
 | 
			
		||||
    DAG.makeEquivalentMemoryOrdering(Ld, HiLd);
 | 
			
		||||
 | 
			
		||||
    LoAddr = St->getBasePtr();
 | 
			
		||||
    HiAddr = DAG.getMemBasePlusOffset(LoAddr, 4, StDL);
 | 
			
		||||
 | 
			
		||||
    SDValue LoSt =
 | 
			
		||||
        DAG.getStore(St->getChain(), StDL, LoLd, LoAddr, St->getPointerInfo(),
 | 
			
		||||
                     St->getAlignment(), St->getMemOperand()->getFlags());
 | 
			
		||||
    SDValue HiSt = DAG.getStore(St->getChain(), StDL, HiLd, HiAddr,
 | 
			
		||||
                                St->getPointerInfo().getWithOffset(4),
 | 
			
		||||
                                MinAlign(St->getAlignment(), 4),
 | 
			
		||||
                                St->getMemOperand()->getFlags());
 | 
			
		||||
    return DAG.getNode(ISD::TokenFactor, StDL, MVT::Other, LoSt, HiSt);
 | 
			
		||||
    // Make sure new load is placed in same chain order.
 | 
			
		||||
    DAG.makeEquivalentMemoryOrdering(Ld, NewLd);
 | 
			
		||||
    return DAG.getStore(St->getChain(), StDL, NewLd, St->getBasePtr(),
 | 
			
		||||
                        St->getMemOperand());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // This is similar to the above case, but here we handle a scalar 64-bit
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue