tcg: Initialize return value after exit_atomic

Users of tcg_gen_atomic_cmpxchg and do_atomic_op rightfully utilize
the output. Even though this code is dead, it gets translated, and
without the initialization we encounter a tcg_error.

Backports commit 79b1af906245558c30e0a5faf26cb52b63f83cce from qemu
This commit is contained in:
Richard Henderson 2018-03-02 15:10:25 -05:00 committed by Lioncash
parent 108354cc4a
commit 69116abafc
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -2924,6 +2924,9 @@ void tcg_gen_atomic_cmpxchg_i64(TCGContext *s,
#endif
#else
gen_helper_exit_atomic(s, s->tcg_env);
/* Produce a result, so that we have a well-formed opcode stream
with respect to uses of the result in the (dead) code following. */
tcg_gen_movi_i64(s, retv, 0);
#endif /* CONFIG_ATOMIC64 */
} else {
TCGv_i32 c32 = tcg_temp_new_i32(s);
@ -3033,6 +3036,9 @@ static void do_atomic_op_i64(TCGContext *s,
#endif
#else
gen_helper_exit_atomic(s, s->tcg_env);
/* Produce a result, so that we have a well-formed opcode stream
with respect to uses of the result in the (dead) code following. */
tcg_gen_movi_i64(s, ret, 0);
#endif /* CONFIG_ATOMIC64 */
} else {
TCGv_i32 v32 = tcg_temp_new_i32(s);