Unified · Split
| @@ -381,8 +381,15 @@ init1(Sym *s, Type *t, long o, int exflag) · 380 unmodified lines | ||
| 381 | 381 | diag(a, "initialization of incompatible pointers: %s\n%T and %T", |
| 382 | 382 | s->name, t, a->type); |
| 383 | 383 | } |
| 384 | − if(a->op == OADDR) | |
| 384 | + switch(a->op) { | |
| 385 | + case OADDR: | |
| 385 | 386 | a = a->left; |
| 387 | + break; | |
| 388 | + case ONAME: | |
| 389 | + case OIND: | |
| 390 | + diag(a, "initializer is not a constant: %s", s->name); | |
| 391 | + return Z; | |
| 392 | + } | |
| 386 | 393 | goto gext; |
| 387 | 394 | } |
| 388 | 395 | |