https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108183
--- Comment #10 from Iain Sandoe <iains at gcc dot gnu.org> --- It looks to me that we never check if Sym is a definition/implementation - only that the containing scope is. I probably miss something subtle - but perhaps IF NOT IsDefImp(Sym) RETURN ( TRUE ) before the mod := line ? (* IsExternal - *) PROCEDURE IsExternal (sym: CARDINAL) : BOOLEAN ; VAR mod: CARDINAL ; BEGIN mod := GetScope(sym) ; REPEAT IF mod=NulSym THEN RETURN( FALSE ) ELSIF IsDefImp(mod) THEN RETURN( mod#GetMainModule() ) END ; mod := GetScope(mod) UNTIL mod=NulSym ; RETURN( FALSE ) END IsExternal ;