mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:49:09 +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
|
begin
|
||||||
{ more deeply nested variant }
|
{ more deeply nested variant }
|
||||||
uniondi:=tai_llvmspecialisedmetadatanode.create(tspecialisedmetadatanodekind.DICompositeType);
|
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.addenum('tag','DW_TAG_union_type');
|
||||||
uniondi.addmetadatarefto('scope',scope);
|
uniondi.addmetadatarefto('scope',scope);
|
||||||
try_add_file_metaref(uniondi,field.fileinfo,false);
|
try_add_file_metaref(uniondi,field.fileinfo,false);
|
||||||
|
Loading…
Reference in New Issue
Block a user