From 172c7845b8c8e0049b677b8b414b59d485a71c1c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Fri, 17 Mar 2006 10:27:04 +0000 Subject: [PATCH] fixed bug --- ir/be/ia32/ia32_map_regs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ir/be/ia32/ia32_map_regs.c b/ir/be/ia32/ia32_map_regs.c index 3c7153089..df84f57b0 100644 --- a/ir/be/ia32/ia32_map_regs.c +++ b/ir/be/ia32/ia32_map_regs.c @@ -189,7 +189,7 @@ const arch_register_t *ia32_get_RegParam_reg(int n, ir_mode **modes, long nr, un /* loop over all parameters and determine whether its a int or float register parameter */ for (i = 0; i < nr && !done && (cc & cc_reg_param); i++) { - if (mode_is_int(modes[i]) && cur_gp_idx < maxnum_gpreg_args) { + if ((mode_is_int(modes[i]) || mode_is_reference(modes[i])) && cur_gp_idx < maxnum_gpreg_args) { /* param can be passed in general purpose register and we have some registers left */ cur_gp_idx++; } @@ -201,7 +201,7 @@ const arch_register_t *ia32_get_RegParam_reg(int n, ir_mode **modes, long nr, un } /* now: i == nr, that's the parameter requirement we want */ - if (mode_is_int(modes[i]) && cur_gp_idx < maxnum_gpreg_args) { + if ((mode_is_int(modes[i]) || mode_is_reference(modes[i])) && cur_gp_idx < maxnum_gpreg_args) { /* parameter #nr can be passed in general purpose register */ param_reg = current_gpreg_param_reg[i]; } -- 2.20.1