riscv64: Disable VarHandle.compareAndSet intrinsics.
Strong CAS is known to be broken.
Test: buildbot-build.sh --target
Bug: 283082089
Change-Id: I5517b1bc7d0e74639b6247e0c371ac13896de2c3
diff --git a/compiler/optimizing/intrinsics_riscv64.cc b/compiler/optimizing/intrinsics_riscv64.cc
index c5aed1b..3af187d 100644
--- a/compiler/optimizing/intrinsics_riscv64.cc
+++ b/compiler/optimizing/intrinsics_riscv64.cc
@@ -2215,6 +2215,13 @@
return;
}
+ if ((true)) {
+ // FIXME(riscv64): Fix the register allocation for strong CAS (SC failure sets the result
+ // to success, so comparison failure on retry returns "true" for a failed CAS).
+ // Review register allocation for weak CAS to make sure it's OK.
+ return;
+ }
+
LocationSummary* locations = CreateVarHandleCommonLocations(invoke, codegen);
DCHECK_EQ(expected_index, 1u + GetExpectedVarHandleCoordinatesCount(invoke));