X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fsymtab.c;h=2c50775d797ffe9e96eaa1993fcc71d5f0141596;hb=c130e597b013e37c94afd6651be1e8859ba7e5ac;hp=850725be9a97b83c263ce60dcffd295bc1c99349;hpb=70755921a959d71bbf94f4fc0425cdb3ba26d71c;p=cc65 diff --git a/src/cc65/symtab.c b/src/cc65/symtab.c index 850725be9..2c50775d7 100644 --- a/src/cc65/symtab.c +++ b/src/cc65/symtab.c @@ -6,9 +6,9 @@ /* */ /* */ /* */ -/* (C) 2000-2001 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ +/* (C) 2000-2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ @@ -40,6 +40,7 @@ /* common */ #include "check.h" +#include "debugflag.h" #include "hashstr.h" #include "xmalloc.h" @@ -246,7 +247,7 @@ void EnterFunctionLevel (void) SymTable* S; /* New lexical level */ - PRECONDITION (++LexicalLevel == LEX_LEVEL_FUNCTION); + ++LexicalLevel; /* Get a new symbol table and make it current */ S = NewSymTable (SYMTAB_SIZE_FUNCTION); @@ -268,7 +269,7 @@ void RememberFunctionLevel (struct FuncDesc* F) /* Remember the symbol tables for the level and leave the level without checks */ { /* Leave the lexical level */ - PRECONDITION (LexicalLevel-- == LEX_LEVEL_FUNCTION); + --LexicalLevel; /* Remember the tables */ F->SymTab = SymTab; @@ -285,7 +286,7 @@ void ReenterFunctionLevel (struct FuncDesc* F) /* Reenter the function lexical level using the existing tables from F */ { /* New lexical level */ - PRECONDITION (++LexicalLevel == LEX_LEVEL_FUNCTION); + ++LexicalLevel; /* Make the tables current again */ F->SymTab->PrevTab = SymTab; @@ -304,7 +305,7 @@ void LeaveFunctionLevel (void) /* Leave function lexical level */ { /* Leave the lexical level */ - PRECONDITION (LexicalLevel-- == LEX_LEVEL_FUNCTION); + --LexicalLevel; /* Check the tables */ CheckSymTable (SymTab); @@ -716,17 +717,17 @@ SymEntry* AddGlobalSym (const char* Name, const type* Type, unsigned Flags) if (IsTypeArray (Type) && IsTypeArray (EType)) { /* Get the array sizes */ - unsigned Size = Decode (Type + 1); - unsigned ESize = Decode (EType + 1); + long Size = GetElementCount (Type); + long ESize = GetElementCount (EType); - if ((Size != 0 && ESize != 0 && Size != ESize) || + if ((Size != UNSPECIFIED && ESize != UNSPECIFIED && Size != ESize) || TypeCmp (Type+DECODE_SIZE+1, EType+DECODE_SIZE+1) < TC_EQUAL) { /* Types not identical: Conflicting types */ Error ("Conflicting types for `%s'", Name); return Entry; } else { /* Check if we have a size in the existing definition */ - if (ESize == 0) { + if (ESize == UNSPECIFIED) { /* Existing, size not given, use size from new def */ Encode (EType + 1, Size); }