]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
tcg: Fix constant propagation in tcg_reg_alloc_dup
authorRichard Henderson <richard.henderson@linaro.org>
Sat, 28 Jun 2025 15:57:53 +0000 (09:57 -0600)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 1 Jul 2025 19:02:27 +0000 (22:02 +0300)
The scalar constant must be replicated for dup.

Cc: qemu-stable@nongnu.org
Fixes: bab1671f0fa ("tcg: Manually expand INDEX_op_dup_vec")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3002
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 0d0fc3f4658937fb81fcc16a89738e83bd8d4795)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
tcg/tcg.c

index dfd48b82642b0775da3dbf3c1fed8fdaf6c81ad8..b1a7465df288635c7a55f6ad9c430f0a0adf8230 100644 (file)
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -4927,7 +4927,7 @@ static void tcg_reg_alloc_dup(TCGContext *s, const TCGOp *op)
 
     if (its->val_type == TEMP_VAL_CONST) {
         /* Propagate constant via movi -> dupi.  */
-        tcg_target_ulong val = its->val;
+        tcg_target_ulong val = dup_const(vece, its->val);
         if (IS_DEAD_ARG(1)) {
             temp_dead(s, its);
         }