summaryrefslogtreecommitdiff
path: root/src/cmd/gc/subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/subr.c')
-rw-r--r--src/cmd/gc/subr.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c
index 76c585d67..c086aeb85 100644
--- a/src/cmd/gc/subr.c
+++ b/src/cmd/gc/subr.c
@@ -822,6 +822,8 @@ etnames[] =
[TSTRING] = "STRING",
[TCHAN] = "CHAN",
[TANY] = "ANY",
+ [TFORWINTER] = "FORWINTER",
+ [TFORWSTRUCT] = "FORWSTRUCT",
};
int
@@ -1327,6 +1329,36 @@ out:
return fmtstrcpy(fp, buf);
}
+
+static char*
+wnames[] =
+{
+ [Wnil] = "Wnil",
+ [Wtnil] = "Wtnil",
+
+ [Wtfloat] = "Wtfloat",
+ [Wtint] = "Wtint",
+ [Wtbool] = "Wtbool",
+ [Wtstr] = "Wtstr",
+
+ [Wlitfloat] = "float constant",
+ [Wlitint] = "int constant",
+ [Wlitbool] = "bool",
+ [Wlitstr] = "string",
+ [Wlitnil] = "nil",
+};
+
+int
+Wconv(Fmt *fp)
+{
+ char buf[500];
+ int w;
+
+ w = va_arg(fp->args, int);
+ if(w < 0 || w >= nelem(wnames) || wnames[w] == nil)
+ return fmtprint(fp, "W-%d", w);
+ return fmtstrcpy(fp, wnames[w]);
+}
int
isnil(Node *n)
{
@@ -1466,6 +1498,20 @@ out:
return t;
}
+int
+iscomposite(Type *t)
+{
+ if(t == T)
+ return 0;
+ switch(t->etype) {
+ case TMAP:
+ case TARRAY:
+ case TSTRUCT:
+ return 1;
+ }
+ return 0;
+}
+
Sym*
globalsig(Type *t)
{