From cced0039c326d749e880915e30b9ee301eee309d Mon Sep 17 00:00:00 2001 From: Spoike Date: Sun, 15 Apr 2007 17:45:10 +0000 Subject: [PATCH] And don't forget +=/-= with vectors. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2496 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/qclib/qcc_pr_comp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/engine/qclib/qcc_pr_comp.c b/engine/qclib/qcc_pr_comp.c index 7b9fcc63f..1ba37e0d8 100644 --- a/engine/qclib/qcc_pr_comp.c +++ b/engine/qclib/qcc_pr_comp.c @@ -1686,16 +1686,25 @@ QCC_def_t *QCC_PR_Statement ( QCC_opcode_t *op, QCC_def_t *var_a, QCC_def_t *var if (statements[st].op == OP_ADDRESS) if (statements[st].c == var_b->ofs) break; + + if (statements[st].c == var_b->ofs) + QCC_PR_ParseWarning(0, "Temp-reuse may have broken your %s", op->name); } if (st < 0) QCC_PR_ParseError(ERR_INTERNAL, "XSTOREP_V couldn't find pointer generation"); var_c = QCC_GetTemp(*op->type_c); - statement_linenums[statement-statements] = pr_source_line; - statement->op = OP_LOAD_V; + statement_linenums[statement-statements] = statement_linenums[st]; + statement->op = OP_ADDRESS; statement->a = statements[st].a; statement->b = statements[st].b; - statement->c = var_c ? var_c->ofs : 0; + statement->c = statements[st].c; + + statement_linenums[st] = pr_source_line; + statements[st].op = OP_LOAD_V; + statements[st].a = statements[st].a; + statements[st].b = statements[st].b; + statements[st].c = var_c->ofs; } statement = &statements[numstatements];