Selaa lähdekoodia

* some missing make_simple_ref calls added, resolves #8948

git-svn-id: trunk@8904 -
florian 18 vuotta sitten
vanhempi
commit
1cb5d2a603
2 muutettua tiedostoa jossa 13 lisäystä ja 3 poistoa
  1. 8 2
      compiler/x86/nx86cnv.pas
  2. 5 1
      compiler/x86_64/nx64cnv.pas

+ 8 - 2
compiler/x86/nx86cnv.pas

@@ -229,7 +229,11 @@ implementation
           u32bit,
           scurrency,
           s64bit:
-            current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IQ,left.location.reference));
+            begin
+              href:=left.location.reference;
+              tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,href);
+              current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IQ,href));
+            end;
           u64bit:
             begin
                { unsigned 64 bit ints are harder to handle:
@@ -268,7 +272,9 @@ implementation
                   cg.a_load_ref_ref(current_asmdata.CurrAsmList,left.location.size,OS_32,left.location.reference,href);
                   left.location.reference:=href;
                 end;
-             current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IL,left.location.reference));
+             href:=left.location.reference;
+             tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,href);
+             current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IL,href));
             end;
         end;
         location_freetemp(current_asmdata.CurrAsmList,left.location);

+ 5 - 1
compiler/x86_64/nx64cnv.pas

@@ -154,7 +154,11 @@ implementation
                   case left.location.loc of
                     LOC_CREFERENCE,
                     LOC_REFERENCE :
-                      current_asmdata.CurrAsmList.concat(Taicpu.op_ref_reg(op,tcgsize2opsize[left.location.size],left.location.reference,location.register));
+                      begin
+                        href:=left.location.reference;
+                        tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,href);
+                        current_asmdata.CurrAsmList.concat(Taicpu.op_ref_reg(op,tcgsize2opsize[left.location.size],href,location.register));
+                      end;
                     LOC_CREGISTER,
                     LOC_REGISTER :
                       current_asmdata.CurrAsmList.concat(Taicpu.op_reg_reg(op,tcgsize2opsize[left.location.size],left.location.register,location.register));