ref: 7665712fe5dbbef474eeef94f8699e3704c209c5
parent: 066865bb4070feeaabfa5ad1a096ac3075476033
parent: 63da1b500c0be08421c826ec58714b5b9a4953ec
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);
--
⑨