summaryrefslogtreecommitdiff
path: root/compiler/optimizing
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing')
-rw-r--r--compiler/optimizing/code_generator_arm64.cc7
1 files changed, 1 insertions, 6 deletions
diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc
index 42d955ef9e..ef2d67334a 100644
--- a/compiler/optimizing/code_generator_arm64.cc
+++ b/compiler/optimizing/code_generator_arm64.cc
@@ -6644,12 +6644,7 @@ void InstructionCodeGeneratorARM64::VisitTypeConversion(HTypeConversion* convers
if (result_type == DataType::Type::kInt32 && input_type == DataType::Type::kInt64) {
// 'int' values are used directly as W registers, discarding the top
// bits, so we don't need to sign-extend and can just perform a move.
- // We do not pass the `kDiscardForSameWReg` argument to force clearing the
- // top 32 bits of the target register. We theoretically could leave those
- // bits unchanged, but we would have to make sure that no code uses a
- // 32bit input value as a 64bit value assuming that the top 32 bits are
- // zero.
- __ Mov(output.W(), source.W());
+ __ Mov(output.W(), source.W(), kDiscardForSameWReg);
} else if (DataType::IsUnsignedType(result_type) ||
(DataType::IsUnsignedType(input_type) && input_size < result_size)) {
__ Ubfx(output, output.IsX() ? source.X() : source.W(), 0, result_size * kBitsPerByte);