Przeglądaj źródła

* i8086 far data memory model fixes in tcgsubscriptnode.pass_generate_code

git-svn-id: trunk@27340 -
nickysn 11 lat temu
rodzic
commit
75f29aacc3
1 zmienionych plików z 4 dodań i 3 usunięć
  1. 4 3
      compiler/ncgmem.pas

+ 4 - 3
compiler/ncgmem.pas

@@ -337,7 +337,7 @@ implementation
                 (target_info.system in systems_garbage_collected_managed_types) then
                begin
                  { the contents of a class are aligned to a sizeof(pointer) }
-                 location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),sizeof(pint));
+                 location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),voidpointertype.size);
                  case left.location.loc of
                     LOC_CREGISTER,
                     LOC_REGISTER:
@@ -351,7 +351,7 @@ implementation
                           end
                         else
                       {$endif}
-                          location.reference.base := left.location.register;
+                          hlcg.reference_reset_base(location.reference,left.resultdef,left.location.register,0,location.reference.alignment);
                       end;
                     LOC_CREFERENCE,
                     LOC_REFERENCE,
@@ -361,7 +361,8 @@ implementation
                     LOC_SUBSETREF,
                     LOC_CSUBSETREF:
                       begin
-                         location.reference.base:=cg.getaddressregister(current_asmdata.CurrAsmList);
+                         hlcg.reference_reset_base(location.reference,left.resultdef,
+                           hlcg.getaddressregister(current_asmdata.CurrAsmList,left.resultdef),0,location.reference.alignment);
                          hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,left.resultdef,left.resultdef,left.location,location.reference.base);
                       end;
                     LOC_CONSTANT: