scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit 8ccd9af2728ca27dd8717acd51319cd0c9890904
parent aca5772fe06bafc1a91c6360fce527f0c5bc8a92
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Wed,  4 Jan 2023 19:20:05 +0100

cc1: Remove simplify() call in assign()

Assign() is called in different contexts and simplify() is called
several times for the same tree making hard to follow where the
simplifications are done and how they are done.

Diffstat:
Msrc/cmd/cc/cc1/builtin.c | 10+++++-----
Msrc/cmd/cc/cc1/expr.c | 2+-
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/cmd/cc/cc1/builtin.c b/src/cmd/cc/cc1/builtin.c @@ -9,7 +9,7 @@ builtin_va_arg(Symbol *sym) Node *np, *ap; Type *tp; - ap = assign(); + ap = simplify(assign()); expect(','); tp = typename(); @@ -37,9 +37,9 @@ builtin_va_copy(Symbol *sym) { Node *np, *src, *dst; - dst = assign(); + dst = simplify(assign()); expect(','); - src = assign(); + src = simplify(assign()); if (!valid_va_list(dst->type) || !valid_va_list(src->type)) { errorp("incorrect parameters for va_copy"); @@ -63,7 +63,7 @@ builtin_va_start(Symbol *sym) Symbol **p; Type *tp; - ap = assign(); + ap = simplify(assign()); expect(','); last = assign(); if (last->op != OSYM) @@ -98,7 +98,7 @@ builtin_va_end(Symbol *sym) { Node *ap, *np; - ap = assign(); + ap = simplify(assign()); if (!valid_va_list(ap->type)) { errorp("incorrect parameters for va_end"); diff --git a/src/cmd/cc/cc1/expr.c b/src/cmd/cc/cc1/expr.c @@ -1093,7 +1093,7 @@ assign(void) case AND_EQ: op = OA_AND; fun = integerop; break; case XOR_EQ: op = OA_XOR; fun = integerop; break; case OR_EQ: op = OA_OR; fun = integerop; break; - default: return simplify(np); + default: return np; } chklvalue(np); np->flags |= NEFFECT;