@@ -6483,7 +6483,7 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
64836483 return ;
64846484 }
64856485 case Intrinsic::memcpy_inline: {
6486- const auto &MCI = cast<MemCpyInlineInst >(I);
6486+ const auto &MCI = cast<MemCpyInst >(I);
64876487 SDValue Dst = getValue (I.getArgOperand (0 ));
64886488 SDValue Src = getValue (I.getArgOperand (1 ));
64896489 SDValue Size = getValue (I.getArgOperand (2 ));
@@ -6503,35 +6503,21 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
65036503 updateDAGForMaybeTailCall (MC);
65046504 return ;
65056505 }
6506- case Intrinsic::memset: {
6507- const auto &MSI = cast<MemSetInst>(I);
6508- SDValue Op1 = getValue (I.getArgOperand (0 ));
6509- SDValue Op2 = getValue (I.getArgOperand (1 ));
6510- SDValue Op3 = getValue (I.getArgOperand (2 ));
6511- // @llvm.memset defines 0 and 1 to both mean no alignment.
6512- Align Alignment = MSI.getDestAlign ().valueOrOne ();
6513- bool isVol = MSI.isVolatile ();
6514- SDValue Root = isVol ? getRoot () : getMemoryRoot ();
6515- SDValue MS = DAG.getMemset (
6516- Root, sdl, Op1, Op2, Op3, Alignment, isVol, /* AlwaysInline */ false ,
6517- &I, MachinePointerInfo (I.getArgOperand (0 )), I.getAAMetadata ());
6518- updateDAGForMaybeTailCall (MS);
6519- return ;
6520- }
6506+ case Intrinsic::memset:
65216507 case Intrinsic::memset_inline: {
6522- const auto &MSII = cast<MemSetInlineInst >(I);
6508+ const auto &MSII = cast<MemSetInst >(I);
65236509 SDValue Dst = getValue (I.getArgOperand (0 ));
65246510 SDValue Value = getValue (I.getArgOperand (1 ));
65256511 SDValue Size = getValue (I.getArgOperand (2 ));
6526- assert (isa<ConstantSDNode>(Size) && " memset_inline needs constant size" );
6512+ assert ((!MSII.isForceInlined () || isa<ConstantSDNode>(Size)) &&
6513+ " memset_inline needs constant size" );
65276514 // @llvm.memset defines 0 and 1 to both mean no alignment.
65286515 Align DstAlign = MSII.getDestAlign ().valueOrOne ();
65296516 bool isVol = MSII.isVolatile ();
65306517 SDValue Root = isVol ? getRoot () : getMemoryRoot ();
6531- SDValue MC = DAG.getMemset (Root, sdl, Dst, Value, Size, DstAlign, isVol,
6532- /* AlwaysInline */ true , &I,
6533- MachinePointerInfo (I.getArgOperand (0 )),
6534- I.getAAMetadata ());
6518+ SDValue MC = DAG.getMemset (
6519+ Root, sdl, Dst, Value, Size, DstAlign, isVol, MSII.isForceInlined (),
6520+ &I, MachinePointerInfo (I.getArgOperand (0 )), I.getAAMetadata ());
65356521 updateDAGForMaybeTailCall (MC);
65366522 return ;
65376523 }
0 commit comments