Преглед изворни кода

* fixed regvar-related bugs (the load node set the location to
LOC_REGISTER instead of LOC_CREGISTER and the assignment node didn't
support loading constants in LOC_CREGISTER's)

Jonas Maebe пре 23 година
родитељ
комит
807cf0000b
1 измењених фајлова са 11 додато и 6 уклоњено
  1. 11 6
      compiler/i386/n386ld.pas

+ 11 - 6
compiler/i386/n386ld.pas

@@ -156,7 +156,7 @@ implementation
                                 if not(makereg32(tvarsym(symtableentry).reg) in [R_EAX..R_EBX]) or
                                    rg.regvar_loaded[makereg32(tvarsym(symtableentry).reg)] then
                                 begin
-                                   location_reset(location,LOC_REGISTER,
+                                   location_reset(location,LOC_CREGISTER,
                                        cg.reg_cgsize(tvarsym(symtableentry).reg));
                                    location.register:=tvarsym(symtableentry).reg;
                                    exclude(rg.unusedregsint,makereg32(tvarsym(symtableentry).reg));
@@ -164,7 +164,7 @@ implementation
                               else
                                 begin
                                   load_regvar(exprasmlist,tvarsym(symtableentry));
-                                  location_reset(location,LOC_REGISTER,
+                                  location_reset(location,LOC_CREGISTER,
                                       cg.reg_cgsize(tvarsym(symtableentry).reg));
                                   location.register:=tvarsym(symtableentry).reg;
                                   exclude(rg.unusedregsint,makereg32(tvarsym(symtableentry).reg));
@@ -577,10 +577,10 @@ implementation
               LOC_CONSTANT :
                 begin
                   if right.location.size in [OS_64,OS_S64] then
-                   tcg64f32(cg).a_load64_const_ref(exprasmlist,
-                       right.location.valuelow,right.location.valuehigh,left.location.reference)
+                   tcg64f32(cg).a_load64_const_loc(exprasmlist,
+                       right.location.valuelow,right.location.valuehigh,left.location)
                   else
-                   cg.a_load_const_ref(exprasmlist,right.location.size,right.location.value,left.location.reference);
+                   cg.a_load_const_loc(exprasmlist,right.location.size,right.location.value,left.location);
                 end;
               LOC_REFERENCE,
               LOC_CREFERENCE :
@@ -993,7 +993,12 @@ begin
 end.
 {
   $Log$
-  Revision 1.31  2002-04-02 17:11:36  peter
+  Revision 1.32  2002-04-03 10:43:37  jonas
+    * fixed regvar-related bugs (the load node set the location to
+      LOC_REGISTER instead of LOC_CREGISTER and the assignment node didn't
+      support loading constants in LOC_CREGISTER's)
+
+  Revision 1.31  2002/04/02 17:11:36  peter
     * tlocation,treference update
     * LOC_CONSTANT added for better constant handling
     * secondadd splitted in multiple routines