summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/cc/dcl.c9
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;
}