Index: src/s390/macro-assembler-s390.cc |
diff --git a/src/s390/macro-assembler-s390.cc b/src/s390/macro-assembler-s390.cc |
index ef82606012a04b5f5d841034509738d10d2375e0..bca8480a578d42ce45638cfad2e7b7ed019fe107 100644 |
--- a/src/s390/macro-assembler-s390.cc |
+++ b/src/s390/macro-assembler-s390.cc |
@@ -3331,7 +3331,10 @@ void MacroAssembler::MulHighU32(Register dst, Register src1, |
void MacroAssembler::Mul32WithOverflowIfCCUnequal(Register dst, Register src1, |
const MemOperand& src2) { |
+ Register result = dst; |
+ if (src2.rx().is(dst) || src2.rb().is(dst)) dst = r0; |
Generate_Mul32WithOverflowIfCCUnequal(msgf); |
+ if (!result.is(dst)) llgfr(result, dst); |
} |
void MacroAssembler::Mul32WithOverflowIfCCUnequal(Register dst, Register src1, |