diff --git a/src/ca65/symentry.c b/src/ca65/symentry.c index cf789da5e..1048bfbc2 100644 --- a/src/ca65/symentry.c +++ b/src/ca65/symentry.c @@ -546,6 +546,18 @@ void SymConDes (SymEntry* S, unsigned char AddrSize, unsigned Type, unsigned Pri return; } + /* If the symbol is already defined, check symbol size against the + ** exported size. + */ + if (S->Flags & SF_DEFINED) { + if (AddrSize == ADDR_SIZE_DEFAULT) { + /* Use the real size of the symbol */ + AddrSize = S->AddrSize; + } else if (S->AddrSize != AddrSize) { + Error ("Address size mismatch for symbol '%m%p'", GetSymName (S)); + } + } + /* If the symbol was already marked as an export or global, check if ** this was done specifiying the same address size. In case of a global ** declaration, silently remove the global flag. @@ -558,18 +570,6 @@ void SymConDes (SymEntry* S, unsigned char AddrSize, unsigned Type, unsigned Pri } S->ExportSize = AddrSize; - /* If the symbol is already defined, check symbol size against the - ** exported size. - */ - if (S->Flags & SF_DEFINED) { - if (S->ExportSize == ADDR_SIZE_DEFAULT) { - /* Use the real size of the symbol */ - S->ExportSize = S->AddrSize; - } else if (S->AddrSize != S->ExportSize) { - Error ("Address size mismatch for symbol '%m%p'", GetSymName (S)); - } - } - /* If the symbol already was declared as a condes of this type, ** check if the new priority value is the same as the old one. */