From 5ab45bb586d934d46c6739452ffdde2f3278156b Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Thu, 18 Aug 2011 15:01:44 +0200 Subject: [PATCH] fix mode of call-result proj --- ir/be/sparc/sparc_transform.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ir/be/sparc/sparc_transform.c b/ir/be/sparc/sparc_transform.c index 4b7a36c75..9f5785c44 100644 --- a/ir/be/sparc/sparc_transform.c +++ b/ir/be/sparc/sparc_transform.c @@ -2154,12 +2154,14 @@ static ir_node *gen_Proj_Proj_Call(ir_node *node) ir_type *function_type = get_Call_type(call); calling_convention_t *cconv = sparc_decide_calling_convention(function_type, NULL); - const reg_or_stackslot_t *res = &cconv->results[pn]; - ir_mode *mode; + const reg_or_stackslot_t *res = &cconv->results[pn]; + ir_mode *mode = get_irn_mode(node); long new_pn = 1 + res->reg_offset; assert(res->req0 != NULL && res->req1 == NULL); - mode = res->req0->cls->mode; + if (mode_needs_gp_reg(mode)) { + mode = mode_gp; + } sparc_free_calling_convention(cconv); return new_r_Proj(new_call, mode, new_pn); -- 2.20.1