浏览代码

* fixed g_rangecheck64 so it works again for big endian

Jonas Maebe 21 年之前
父节点
当前提交
5c7dba9167
共有 1 个文件被更改,包括 10 次插入3 次删除
  1. 10 3
      compiler/cg64f32.pas

+ 10 - 3
compiler/cg64f32.pas

@@ -562,10 +562,14 @@ unit cg64f32;
              { simple cardinal                                          }
              cg.a_label(list,poslabel);
              hdef:=torddef.create(u32bit,0,cardinal($ffffffff));
-             { no use in calling just "g_rangecheck" since that one will }
-             { simply call the inherited method too (JM)                 }
+
              location_copy(temploc,l);
              temploc.size:=OS_32;
+
+             if (temploc.loc in [LOC_REFERENCE,LOC_CREFERENCE]) and
+                (target_info.endian = endian_big) then
+               inc(temploc.reference.offset,4);
+            
              cg.g_rangecheck(list,temploc,hdef,todef);
              hdef.free;
 
@@ -761,7 +765,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.54  2003-12-06 01:15:22  florian
+  Revision 1.55  2003-12-07 15:00:45  jonas
+    * fixed g_rangecheck64 so it works again for big endian
+
+  Revision 1.54  2003/12/06 01:15:22  florian
     * reverted Peter's alloctemp patch; hopefully properly
 
   Revision 1.53  2003/12/03 23:13:19  peter