From 872b13616d419df4bf5c4088c2b482165bc0c26a Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Fri, 16 Nov 2012 21:50:27 +0900 Subject: [PATCH] Ensure return's operand gets set properly. Yay for coding and designing at the same time, not :P --- tools/qfcc/source/flow.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/qfcc/source/flow.c b/tools/qfcc/source/flow.c index 7cc92d8c3..0965a90db 100644 --- a/tools/qfcc/source/flow.c +++ b/tools/qfcc/source/flow.c @@ -527,7 +527,7 @@ void flow_analyze_statement (statement_t *s, set_t *use, set_t *def, set_t *kill, operand_t *operands[4]) { - int i, start, calln; + int i, start, calln = -1; if (use) set_empty (use); @@ -593,17 +593,15 @@ flow_analyze_statement (statement_t *s, set_t *use, set_t *def, set_t *kill, if (strcmp (s->opcode, "") == 0 || strcmp (s->opcode, "") == 0) { flow_add_op_var (use, s->opa); - break; } else if (strcmp (s->opcode, "") == 0) { if (use) set_add (use, 0); //FIXME assumes .return location - break; } if (strncmp (s->opcode, "opcode[5] - '0'; flow_add_op_var (use, s->opa); - } else { // RCALL + } else if (strncmp (s->opcode, "opcode[6] - '0'; flow_add_op_var (use, s->opa); @@ -611,12 +609,14 @@ flow_analyze_statement (statement_t *s, set_t *use, set_t *def, set_t *kill, if (s->opc) flow_add_op_var (use, s->opc); } - if (use) { - for (i = start; i < calln; i++) - set_add (use, i + 1); //FIXME assumes .param_N locations + if (calln >= 0) { + if (use) { + for (i = start; i < calln; i++) + set_add (use, i + 1);//FIXME assumes .param_N locations + } + if (kill) + set_add (kill, 0); //FIXME assumes .return location } - if (kill) - set_add (kill, 0); //FIXME assumes .return location if (operands) { operands[1] = s->opa; operands[2] = s->opb;