* do not add references to external procedures and variables to the used

compiler symbols of the current module (useless, and moreover crashes
    clang)

git-svn-id: branches/debug_eh@41215 -
This commit is contained in:
Jonas Maebe 2019-02-03 21:10:11 +00:00
parent 1b48e6abe8
commit 016882ca82

View File

@ -1388,13 +1388,15 @@ begin
begin
case srsym.typ of
staticvarsym:
cnodeutils.RegisterUsedAsmSym(current_asmdata.RefAsmSymbol(srsym.mangledname,AT_DATA),tstaticvarsym(srsym).vardef,true);
if not(vo_is_external in tstaticvarsym(srsym).varoptions) then
cnodeutils.RegisterUsedAsmSym(current_asmdata.RefAsmSymbol(srsym.mangledname,AT_DATA),tstaticvarsym(srsym).vardef,true);
procsym:
begin
{ if it's a pure assembler routine, the definition of the symbol will also
be in assembler and it can't be removed by the compiler (and if we mark
it as used anyway, clang will get into trouble) }
if not(po_assembler in tprocdef(tprocsym(srsym).ProcdefList[0]).procoptions) then
if not(po_assembler in tprocdef(tprocsym(srsym).ProcdefList[0]).procoptions) and
not(po_external in tprocdef(tprocsym(srsym).ProcdefList[0]).procoptions) then
cnodeutils.RegisterUsedAsmSym(current_asmdata.RefAsmSymbol(tprocdef(tprocsym(srsym).ProcdefList[0]).mangledname,AT_FUNCTION),tprocdef(tprocsym(srsym).ProcdefList[0]),true);
end;
end;