diff options
| -rw-r--r-- | sys/src/cmd/cc/dcl.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/src/cmd/cc/dcl.c b/sys/src/cmd/cc/dcl.c index 7b2ae464f..1a7f38e1a 100644 --- a/sys/src/cmd/cc/dcl.c +++ b/sys/src/cmd/cc/dcl.c @@ -381,11 +381,12 @@ init1(Sym *s, Type *t, long o, int exflag) diag(a, "initialization of incompatible pointers: %s\n%T and %T", s->name, t, a->type); } - if(a->op == OADDR) { + switch(a->op) { + case OADDR: a = a->left; - goto gext; - } - if(a->type->etype == TIND) { + break; + case ONAME: + case OIND: diag(a, "initializer is not a constant: %s", s->name); return Z; } |
