From a173c34d967ca81852ce58c9a2e19dc1bd66db2e Mon Sep 17 00:00:00 2001 From: svenbarth Date: Fri, 29 Jul 2016 14:03:31 +0000 Subject: [PATCH] * have tcgrttinode use the indirect RTTI labels if necessary git-svn-id: trunk@34224 - --- compiler/ncgld.pas | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/compiler/ncgld.pas b/compiler/ncgld.pas index 559ac9557f..b5c98f17ed 100644 --- a/compiler/ncgld.pas +++ b/compiler/ncgld.pas @@ -1456,15 +1456,22 @@ implementation *****************************************************************************} procedure tcgrttinode.pass_generate_code; + var + indirect : boolean; begin + indirect := (tf_supports_packages in target_info.flags) and + (target_info.system in systems_indirect_var_imports) and + (cs_imported_data in current_settings.localswitches) and + (rttidef.owner.moduleid<>current_module.moduleid); + location_reset_ref(location,LOC_CREFERENCE,OS_NO,sizeof(pint)); case rttidatatype of rdt_normal: - location.reference.symbol:=RTTIWriter.get_rtti_label(rttidef,rttitype,false); + location.reference.symbol:=RTTIWriter.get_rtti_label(rttidef,rttitype,indirect); rdt_ord2str: - location.reference.symbol:=RTTIWriter.get_rtti_label_ord2str(rttidef,rttitype,false); + location.reference.symbol:=RTTIWriter.get_rtti_label_ord2str(rttidef,rttitype,indirect); rdt_str2ord: - location.reference.symbol:=RTTIWriter.get_rtti_label_str2ord(rttidef,rttitype,false); + location.reference.symbol:=RTTIWriter.get_rtti_label_str2ord(rttidef,rttitype,indirect); end; end;