* treat Objective-C metaclasses (classrefdefs) as voidpointertype at the

LLVM type level

git-svn-id: trunk@32884 -
This commit is contained in:
Jonas Maebe 2016-01-07 22:06:13 +00:00
parent 53bf43983a
commit 3f7169e250
2 changed files with 10 additions and 3 deletions

View File

@ -384,8 +384,13 @@ implementation
end;
classrefdef :
begin
llvmaddencodedtype_intern(tobjectdef(tclassrefdef(def).pointeddef).vmt_def,flags,encodedstr);
encodedstr:=encodedstr+'*';
if is_class(tclassrefdef(def).pointeddef) then
begin
llvmaddencodedtype_intern(tobjectdef(tclassrefdef(def).pointeddef).vmt_def,flags,encodedstr);
encodedstr:=encodedstr+'*';
end
else
encodedstr:=encodedstr+'i8*'
end;
setdef :
begin

View File

@ -697,7 +697,9 @@ implementation
procedure TLLVMTypeInfo.appenddef_classref(list: TAsmList; def: tclassrefdef);
begin
record_def(def);
record_def(tobjectdef(tclassrefdef(def).pointeddef).vmt_def);
{ can also be an objcclass, which doesn't have a vmt }
if is_class(tclassrefdef(def).pointeddef) then
record_def(tobjectdef(tclassrefdef(def).pointeddef).vmt_def);
end;