File tree 1 file changed +8
-6
lines changed
1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -6792,8 +6792,6 @@ void Lowering::LowerStoreIndirCommon(GenTreeStoreInd* ind)
6792
6792
TryCreateAddrMode (ind->Addr (), true , ind->TypeGet ());
6793
6793
if (!comp->codeGen ->gcInfo .gcIsWriteBarrierStoreIndNode (ind))
6794
6794
{
6795
- LowerStoreIndir (ind);
6796
-
6797
6795
if (varTypeIsFloating (ind) && ind->Data ()->IsCnsFltOrDbl ())
6798
6796
{
6799
6797
// Optimize *x = DCON to *x = ICON which is slightly faster on xarch
@@ -6802,11 +6800,16 @@ void Lowering::LowerStoreIndirCommon(GenTreeStoreInd* ind)
6802
6800
ssize_t intCns = 0 ;
6803
6801
var_types type = TYP_UNKNOWN;
6804
6802
6805
- if (ind->TypeIs (TYP_FLOAT))
6803
+ if (ind->TypeIs (TYP_FLOAT)
6804
+ #if defined(TARGET_ARM64) || defined(TARGET_ARM)
6805
+ && data->IsFPZero ()
6806
+ #endif
6807
+ )
6806
6808
{
6807
6809
float fltCns = static_cast <float >(dblCns); // should be a safe round-trip
6808
6810
intCns = static_cast <ssize_t >(*reinterpret_cast <INT32*>(&fltCns));
6809
6811
type = TYP_INT;
6812
+ printf (" qwe" );
6810
6813
}
6811
6814
#ifdef TARGET_AMD64
6812
6815
else
@@ -6820,12 +6823,11 @@ void Lowering::LowerStoreIndirCommon(GenTreeStoreInd* ind)
6820
6823
if (type != TYP_UNKNOWN)
6821
6824
{
6822
6825
data->BashToConst (intCns, type);
6823
- #if defined(TARGET_ARM64)
6824
- data->SetContained ();
6825
- #endif
6826
6826
ind->ChangeType (type);
6827
6827
}
6828
6828
}
6829
+
6830
+ LowerStoreIndir (ind);
6829
6831
}
6830
6832
}
6831
6833
You can’t perform that action at this time.
0 commit comments