diff options
Diffstat (limited to 'compiler/optimizing')
-rw-r--r-- | compiler/optimizing/code_generator_arm64.cc | 7 |
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); |