From: chenglulu <chengl...@loongson.cn>

gcc/ChangeLog:

        * config/loongarch/loongarch.cc: Fix bug for
          tmpdir-g++.dg-struct-layout-1/t033.
---
 gcc/config/loongarch/loongarch.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gcc/config/loongarch/loongarch.cc 
b/gcc/config/loongarch/loongarch.cc
index 6e24111a79d..f22150a60cc 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -473,13 +473,14 @@ loongarch_pass_aggregate_in_fpr_and_gpr_p (const_tree 
type,
 
 static rtx
 loongarch_pass_fpr_single (machine_mode type_mode, unsigned regno,
-                          machine_mode value_mode)
+                          machine_mode value_mode,
+                          HOST_WIDE_INT offset)
 {
   rtx x = gen_rtx_REG (value_mode, regno);
 
   if (type_mode != value_mode)
     {
-      x = gen_rtx_EXPR_LIST (VOIDmode, x, const0_rtx);
+      x = gen_rtx_EXPR_LIST (VOIDmode, x, GEN_INT (offset));
       x = gen_rtx_PARALLEL (type_mode, gen_rtvec (1, x));
     }
   return x;
@@ -539,7 +540,8 @@ loongarch_get_arg_info (struct loongarch_arg_info *info,
          {
          case 1:
            return loongarch_pass_fpr_single (mode, fregno,
-                                             TYPE_MODE (fields[0].type));
+                                             TYPE_MODE (fields[0].type),
+                                             fields[0].offset);
 
          case 2:
            return loongarch_pass_fpr_pair (mode, fregno,
-- 
2.31.1

Reply via email to