@@ -2181,11 +2181,13 @@ LowererMD::ChangeToLea(IR::Instr * instr, bool postRegAlloc)
2181
2181
IR::Instr *
2182
2182
LowererMD::LowerRet (IR::Instr * retInstr)
2183
2183
{
2184
- IR::RegOpnd *retReg = IR::RegOpnd::New (nullptr , RETURN_REG, TyMachReg, m_func);
2184
+ IR::RegOpnd *retReg = IR::RegOpnd::New (TyMachReg, m_func);
2185
+ retReg->SetReg (RETURN_REG);
2186
+ Lowerer::InsertMove (retReg, retInstr->UnlinkSrc1 (), retInstr);
2185
2187
2186
- retInstr->SetDst (retReg);
2188
+ retInstr->SetSrc1 (retReg);
2187
2189
2188
- return this -> ChangeToAssign ( retInstr) ;
2190
+ return retInstr;
2189
2191
}
2190
2192
2191
2193
@@ -5886,10 +5888,14 @@ LowererMD::EmitInt4Instr(IR::Instr *instr)
5886
5888
instr->m_opcode = Js::OpCode::MUL;
5887
5889
break ;
5888
5890
5891
+ case Js::OpCode::DivU_I4:
5892
+ AssertMsg (UNREACHED, " Unsigned div NYI" );
5889
5893
case Js::OpCode::Div_I4:
5890
5894
instr->m_opcode = Js::OpCode::SDIV;
5891
5895
break ;
5892
5896
5897
+ case Js::OpCode::RemU_I4:
5898
+ AssertMsg (UNREACHED, " Unsigned rem NYI" );
5893
5899
case Js::OpCode::Rem_I4:
5894
5900
instr->m_opcode = Js::OpCode::REM;
5895
5901
break ;
@@ -7663,7 +7669,7 @@ LowererMD::LoadFloatValue(IR::Opnd * opndDst, double value, IR::Instr * instrIns
7663
7669
#if DBG
7664
7670
NativeCodeData::GetDataDescription (pValue, instrInsert->m_func ->m_alloc ),
7665
7671
#endif
7666
- instrInsert->m_func );
7672
+ instrInsert->m_func , true );
7667
7673
}
7668
7674
else
7669
7675
{
@@ -7763,6 +7769,9 @@ LowererMD::FinalLower()
7763
7769
7764
7770
switch (instr->m_opcode )
7765
7771
{
7772
+ case Js::OpCode::Ret:
7773
+ instr->Remove ();
7774
+ break ;
7766
7775
case Js::OpCode::Leave:
7767
7776
Assert (this ->m_func ->DoOptimizeTry () && !this ->m_func ->IsLoopBodyInTry ());
7768
7777
instrPrev = this ->LowerLeave (instr, instr->AsBranchInstr ()->GetTarget (), true /* fromFinalLower*/ );
0 commit comments