Don't remove unused public variables

But still warn about them unless they are marked as stock.

Fixes #71
This commit is contained in:
Zeex 2015-06-20 16:45:06 +06:00
parent 88f78aa882
commit d8f824357f
2 changed files with 3 additions and 3 deletions

View File

@ -1976,7 +1976,7 @@ static void declglb(char *firstname,int firsttag,int fpublic,int fstatic,int fst
* second stage), shut off code generation
*/
cidx=0; /* only to avoid a compiler warning */
if (sc_status==statWRITE && sym!=NULL && (sym->usage & (uREAD | uWRITTEN))==0) {
if (sc_status==statWRITE && sym!=NULL && (sym->usage & (uREAD | uWRITTEN | uPUBLIC))==0) {
sc_status=statSKIP;
cidx=code_idx;
#if !defined NDEBUG

View File

@ -747,7 +747,7 @@ SC_FUNC int assemble(FILE *fout,FILE *fin)
mainaddr=sym->addr;
} /* if */
} else if (sym->ident==iVARIABLE) {
if ((sym->usage & uPUBLIC)!=0 && (sym->usage & (uREAD | uWRITTEN))!=0)
if ((sym->usage & uPUBLIC)!=0)
match=++numpubvars;
} /* if */
if (match) {
@ -924,7 +924,7 @@ SC_FUNC int assemble(FILE *fout,FILE *fin)
/* write the public variables table */
count=0;
for (sym=glbtab.next; sym!=NULL; sym=sym->next) {
if (sym->ident==iVARIABLE && (sym->usage & uPUBLIC)!=0 && (sym->usage & (uREAD | uWRITTEN))!=0) {
if (sym->ident==iVARIABLE && (sym->usage & uPUBLIC)!=0) {
assert((sym->usage & uDEFINE)!=0);
assert(sym->vclass==sGLOBAL);
func.address=sym->addr;