Add scheduling barrier at the end of IT blocks for FP comparisons.
Bug: 3448446
Change-Id: I98e2bbc4886443ba3c27c2963d7540fcee5790bb
diff --git a/vm/compiler/codegen/arm/FP/Thumb2VFP.c b/vm/compiler/codegen/arm/FP/Thumb2VFP.c
index 064183b..61698c2 100644
--- a/vm/compiler/codegen/arm/FP/Thumb2VFP.c
+++ b/vm/compiler/codegen/arm/FP/Thumb2VFP.c
@@ -251,11 +251,16 @@
}
assert(!FPREG(rlResult.lowReg));
newLIR0(cUnit, kThumb2Fmstat);
+
genIT(cUnit, (defaultResult == -1) ? kArmCondGt : kArmCondMi, "");
newLIR2(cUnit, kThumb2MovImmShift, rlResult.lowReg,
modifiedImmediate(-defaultResult)); // Must not alter ccodes
+ genBarrier(cUnit);
+
genIT(cUnit, kArmCondEq, "");
loadConstant(cUnit, rlResult.lowReg, 0);
+ genBarrier(cUnit);
+
storeValue(cUnit, rlDest, rlResult);
return false;
}