* record rather than immediately append encountered defs, so that we don't

emit the same def multiple times

git-svn-id: trunk@32162 -
This commit is contained in:
Jonas Maebe 2015-10-26 21:24:29 +00:00
parent 0fc9148784
commit d7bda793f2

View File

@ -180,7 +180,7 @@ implementation
for opidx:=0 to p.ops-1 do
case p.oper[opidx]^.typ of
top_def:
appenddef(deftypelist,p.oper[opidx]^.def);
record_def(p.oper[opidx]^.def);
top_tai:
collect_tai_info(deftypelist,p.oper[opidx]^.ai);
top_ref:
@ -201,7 +201,7 @@ implementation
for paraidx:=0 to p.oper[opidx]^.paras.count-1 do
begin
callpara:=pllvmcallpara(p.oper[opidx]^.paras[paraidx]);
appenddef(deftypelist,callpara^.def);
record_def(callpara^.def);
end;
end;
end;
@ -212,19 +212,21 @@ implementation
case p.typ of
ait_llvmalias:
begin
appenddef(deftypelist,taillvmalias(p).def);
record_def(taillvmalias(p).def);
record_asmsym_def(taillvmalias(p).newsym,taillvmalias(p).def,true);
end;
ait_llvmdecl:
begin
appenddef(deftypelist,taillvmdecl(p).def);
if taillvmdecl(p).namesym.Name='\01_U_$OBJPAS_$$_EXCEPTIONCLASS' then
writeln('here');
record_def(taillvmdecl(p).def);
record_asmsym_def(taillvmdecl(p).namesym,taillvmdecl(p).def,true);
collect_asmlist_info(deftypelist,taillvmdecl(p).initdata);
end;
ait_llvmins:
collect_llvmins_info(deftypelist,taillvm(p));
ait_typedconst:
appenddef(deftypelist,tai_abstracttypedconst(p).def);
record_def(tai_abstracttypedconst(p).def);
end;
end;
@ -472,7 +474,7 @@ implementation
begin
symdeflist:=tabstractrecordsymtable(def.symtable).llvmst.symdeflist;
for i:=0 to symdeflist.Count-1 do
appenddef(list,tllvmshadowsymtableentry(symdeflist[i]).def);
record_def(tllvmshadowsymtableentry(symdeflist[i]).def);
if assigned(def.typesym) then
list.concat(taillvm.op_size(LA_TYPE,record_def(def)));
end;