commit d345cbc168b653ee8338863aa8e0769f6758119c
parent dbebe83920a39618fa2d0aa8ca06572e96c20ff0
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Thu, 4 Nov 2021 07:54:49 +0100
cc2/qbe: Add complex()
The calculation of the complexity number can be factorized
and reuse it in different places of the code.
Diffstat:
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/src/cmd/cc/cc2/target/qbe/cgen.c b/src/cmd/cc/cc2/target/qbe/cgen.c
@@ -98,6 +98,29 @@ tmpnode(Node *np, Type *tp)
}
static Node *
+complex(Node *np)
+{
+ Node *lp = np->left, *rp = np->right;
+
+ if (np->address > 10)
+ return np;
+ if (lp)
+ np->complex = lp->complex;
+ if (rp) {
+ int d = np->complex - rp->complex;
+
+ if (d == 0)
+ ++np->complex;
+ else if (d < 0)
+ np->complex = rp->complex;
+ }
+ if (np->complex == 0)
+ ++np->complex;
+
+ return np;
+}
+
+static Node *
load(Type *tp, Node *np, Node *new)
{
int op;
@@ -726,19 +749,5 @@ sethi(Node *np)
np->left = lp;
np->right = rp;
- if (np->address > 10)
- return np;
- if (lp)
- np->complex = lp->complex;
- if (rp) {
- int d = np->complex - rp->complex;
-
- if (d == 0)
- ++np->complex;
- else if (d < 0)
- np->complex = rp->complex;
- }
- if (np->complex == 0)
- ++np->complex;
- return np;
+ return complex(np);
}