ref: 662fd71e115b1cbd35233f2d64f7828bb9bd3f59
parent: 62eec43340340fa981340e4b521908b40b84b782
parent: 71939a82ccc505b0baa990d7fe17e7085d0ab8fc
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Sep 8 15:04:55 EDT 2019
merge
--- a/sys/src/cmd/audio/libFLAC/mkfile
+++ b/sys/src/cmd/audio/libFLAC/mkfile
@@ -26,6 +26,6 @@
window.$O\
CC=pcc
-CFLAGS=-I. -I../libogg -DVERSION="1.3.1" -DPlan9 -DFLAC__NO_ASM -DFLAC__HAS_OGG -DFLAC__ALIGN_MALLOC_DATA -D_C99_SNPRINTF_EXTENSION -D_BSD_EXTENSION -D_POSIX_SOURCE -c
+CFLAGS=-I. -I../libogg -DVERSION="1.3.1" -DPlan9 -DFLAC__NO_ASM -DFLAC__HAS_OGG -DFLAC__ALIGN_MALLOC_DATA -D_C99_SNPRINTF_EXTENSION -D_BSD_EXTENSION -D_POSIX_SOURCE -DHAVE_STDINT_H -c
</sys/src/cmd/mklib
--- a/sys/src/cmd/cc/dcl.c
+++ b/sys/src/cmd/cc/dcl.c
@@ -373,35 +373,35 @@
goto gext;
}
if(t->etype == TIND) {
- while(a->op == OCAST) {
+ if(a->op == OCAST)
warn(a, "CAST in initialization ignored");
- a = a->left;
- }
- if(!sametype(t, a->type)) {
+ if(!sametype(t, a->type))
diag(a, "initialization of incompatible pointers: %s\n%T and %T",
s->name, t, a->type);
- }
- switch(a->op) {
- case OADDR:
- a = a->left;
- break;
- case ONAME:
- case OIND:
- diag(a, "initializer is not a constant: %s", s->name);
- return Z;
- }
- goto gext;
}
while(a->op == OCAST)
a = a->left;
- if(a->op == OADDR) {
- warn(a, "initialize pointer to an integer: %s", s->name);
+
+ switch(a->op) {
+ case OADDR:
+ if(t->etype != TIND)
+ warn(a, "initialize pointer to an integer: %s", s->name);
a = a->left;
- goto gext;
+ break;
+ case OADD:
+ /*
+ * Constants will be folded before this point, which just leaves offsets
+ * from names.
+ */
+ l = a->left;
+ r = a->right;
+ if(l->op == OADDR && r->op == OCONST || r->op == OADDR && l->op == OCONST)
+ break;
+ default:
+ diag(a, "initializer is not a constant: %s", s->name);
+ return Z;
}
- diag(a, "initializer is not a constant: %s", s->name);
- return Z;
gext:
gextern(s, a, o, t->width);