commit 19f5c0a15f0e21510092ded91507a7a6e5feb9cf
Author:     Roberto E. Vargas Caballero <k...@shike2.com>
AuthorDate: Tue Jun 7 08:40:34 2016 +0200
Commit:     Roberto E. Vargas Caballero <k...@shike2.com>
CommitDate: Tue Jun 7 08:40:34 2016 +0200

    [cc2] Add newlabel()
    
    This function is going to be useful in different targets and in a lot of
    different situations, so it is a good idea to have it in cc2/code.c.

diff --git a/cc2/arch/qbe/cgen.c b/cc2/arch/qbe/cgen.c
index 472b81a..3541a25 100644
--- a/cc2/arch/qbe/cgen.c
+++ b/cc2/arch/qbe/cgen.c
@@ -410,11 +410,8 @@ cgen(Node *np)
        case OBRANCH:
                next = np->next;
                load(np, LOADL);
-               if (next->label) {
-                       sym = getsym(TMPSYM);
-                       sym->kind = SLABEL;
-                       next->label = sym;
-               }
+               if (!next->label)
+                       next->label = newlabel();
                ifyes = label2node(np->u.sym);
                ifno = label2node(next->label);
                op = ASBRANCH;
diff --git a/cc2/cc2.h b/cc2/cc2.h
index 4a44b55..00528da 100644
--- a/cc2/cc2.h
+++ b/cc2/cc2.h
@@ -207,6 +207,7 @@ extern void code(int op, Node *to, Node *from1, Node 
*from2);
 extern void defvar(Symbol *), defpar(Symbol *), defglobal(Symbol *);
 extern void setlabel(Symbol *sym);
 extern Node *label2node(Symbol *sym);
+extern Symbol *newlabel(void);
 
 /* node.c */
 #define SETCUR  1
diff --git a/cc2/code.c b/cc2/code.c
index 829a695..ba7c616 100644
--- a/cc2/code.c
+++ b/cc2/code.c
@@ -57,6 +57,15 @@ addr(Node *np, Addr *addr)
        }
 }
 
+Symbol *
+newlabel(void)
+{
+       Symbol *sym = getsym(TMPSYM);
+
+       sym->kind = SLABEL;
+       return sym;
+}
+
 Node *
 label2node(Symbol *sym)
 {

Reply via email to