From: Christian Würdig Date: Fri, 17 Mar 2006 10:27:04 +0000 (+0000) Subject: fixed bug X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=172c7845b8c8e0049b677b8b414b59d485a71c1c;p=libfirm fixed bug --- 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]; }