aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/loongarch
diff options
context:
space:
mode:
authorchenglulu <chenglulu@loongson.cn>2022-03-28 17:02:39 +0800
committerLulu Cheng <chenglulu@loongson.cn>2022-04-12 09:13:51 +0800
commit6afb21b824dabf17c79e7b0a4230572f091307ec (patch)
tree8d58fa7ffea742d42528b39f74476f816c25510d /gcc/config/loongarch
parentda066c4269c7992327bd2abdf51f075a1b1240f7 (diff)
downloadgcc-6afb21b824dabf17c79e7b0a4230572f091307ec.zip
gcc-6afb21b824dabf17c79e7b0a4230572f091307ec.tar.gz
gcc-6afb21b824dabf17c79e7b0a4230572f091307ec.tar.bz2
LoongArch: Fix bug for tmpdir-g++.dg-struct-layout-1/t033.
gcc/ChangeLog: * config/loongarch/loongarch.cc: Fix bug for tmpdir-g++.dg-struct-layout-1/t033.
Diffstat (limited to 'gcc/config/loongarch')
-rw-r--r--gcc/config/loongarch/loongarch.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
index 6e24111..f22150a 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,