diff options
author | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-07-29 14:03:31 +0000 |
---|---|---|
committer | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-07-29 14:03:31 +0000 |
commit | dd656012aee70d2948940738c2e73ca8f7140459 (patch) | |
tree | 8b7c37f3d405635fa91fdb5c460ea040460c6493 /compiler/ncgld.pas | |
parent | 92b6e39184c4b7779967b407e88f2762e4b83fdd (diff) | |
download | fpc-dd656012aee70d2948940738c2e73ca8f7140459.tar.gz |
* have tcgrttinode use the indirect RTTI labels if necessary
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@34224 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ncgld.pas')
-rw-r--r-- | compiler/ncgld.pas | 13 |
1 files 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; |