diff options
Diffstat (limited to 'src/cmd/gc/subr.c')
-rw-r--r-- | src/cmd/gc/subr.c | 46 |
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) { |