TagTab = S;
/* Create and assign a new label table */
- LabelTab = NewSymTable (SYMTAB_SIZE_LABEL);
+ S = NewSymTable (SYMTAB_SIZE_LABEL);
+ S->PrevTab = LabelTab;
+ LabelTab = S;
}
/* Don't delete the tables */
SymTab = SymTab->PrevTab;
TagTab = TagTab->PrevTab;
+ LabelTab = LabelTab->PrevTab;
}
}
}
+ /* An extern declaration must not change the current linkage. */
+ if (IsFunc || (Flags & (SC_EXTERN | SC_DEF)) == SC_EXTERN) {
+ Flags &= ~SC_EXTERN;
+ }
+
/* Add the new flags */
Entry->Flags |= Flags;