mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 02:32:51 +02:00
llvmdbg: fixed variant fields
They have to be members with a union type, rather than union types themselves.
This commit is contained in:
parent
b68512a969
commit
d92bc0e760
@ -1195,9 +1195,20 @@ implementation
|
||||
begin
|
||||
{ more deeply nested variant }
|
||||
uniondi:=tai_llvmspecialisedmetadatanode.create(tspecialisedmetadatanodekind.DICompositeType);
|
||||
list.concat(uniondi);
|
||||
fieldlist.addvalue(llvm_getmetadatareftypedconst(uniondi));
|
||||
|
||||
fielddi:=tai_llvmspecialisedmetadatanode.create(tspecialisedmetadatanodekind.DIDerivedType);
|
||||
fielddi.addenum('tag','DW_TAG_member');
|
||||
fielddi.addmetadatarefto('scope',scope);
|
||||
try_add_file_metaref(fielddi,field.fileinfo,false);
|
||||
fielddi.addmetadatarefto('baseType',uniondi);
|
||||
fielddi.addint64('size',cappedsize-min(field.bitoffset,cappedsize));
|
||||
bitoffset:=bitoffsetfromvariantstart(field,variantinfolist,cappedsize);
|
||||
if bitoffset<>0 then
|
||||
fielddi.addqword('offset',bitoffset);
|
||||
list.concat(fielddi);
|
||||
fieldlist.addvalue(llvm_getmetadatareftypedconst(fielddi));
|
||||
|
||||
list.concat(uniondi);
|
||||
uniondi.addenum('tag','DW_TAG_union_type');
|
||||
uniondi.addmetadatarefto('scope',scope);
|
||||
try_add_file_metaref(uniondi,field.fileinfo,false);
|
||||
|
Loading…
Reference in New Issue
Block a user