aboutsummaryrefslogtreecommitdiff
path: root/tcg
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2021-10-28 14:34:10 -0400
committerRichard Henderson <richard.henderson@linaro.org>2021-10-28 20:54:52 -0700
commit18cf3d07a2556700895c626754937e90f8e972cf (patch)
tree442e9c13764a90bceb0132528cb66cfe2db27a47 /tcg
parent7a2f70845255bd6a2ad6399d159c58a7e7b64b51 (diff)
downloadqemu-18cf3d07a2556700895c626754937e90f8e972cf.zip
qemu-18cf3d07a2556700895c626754937e90f8e972cf.tar.gz
qemu-18cf3d07a2556700895c626754937e90f8e972cf.tar.bz2
tcg: Extend call args using the correct opcodes
Pretending that the source is i64 when it is in fact i32 is incorrect; we have type-changing opcodes that must be used. This bug trips up the subsequent change to the optimizer. Fixes: 4f2331e5b67a Reviewed-by: Luis Pires <luis.pires@eldorado.org.br> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tcg')
-rw-r--r--tcg/tcg.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 024a22c..6332cdc 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1508,11 +1508,11 @@ void tcg_gen_callN(void *func, TCGTemp *ret, int nargs, TCGTemp **args)
if (is_32bit) {
TCGv_i64 temp = tcg_temp_new_i64();
- TCGv_i64 orig = temp_tcgv_i64(args[i]);
+ TCGv_i32 orig = temp_tcgv_i32(args[i]);
if (is_signed) {
- tcg_gen_ext32s_i64(temp, orig);
+ tcg_gen_ext_i32_i64(temp, orig);
} else {
- tcg_gen_ext32u_i64(temp, orig);
+ tcg_gen_extu_i32_i64(temp, orig);
}
args[i] = tcgv_i64_temp(temp);
}