소스 검색

* fixed r34439 for big endian

git-svn-id: trunk@34444 -
Jonas Maebe 9 년 전
부모
커밋
997a958f72
1개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 3 3
      compiler/ngtcon.pas

+ 3 - 3
compiler/ngtcon.pas

@@ -1042,14 +1042,14 @@ function get_next_varsym(def: tabstractrecorddef; const SymList:TFPHashObjectLis
                         ftcb.emit_tai(tai_const.create_8bit(setval),def);
                         ftcb.emit_tai(tai_const.create_8bit(setval),def);
                       2:
                       2:
                         begin
                         begin
-                          if source_info.endian<>target_info.endian then
+                          if target_info.endian=endian_big then
                             setval:=swap(word(setval));
                             setval:=swap(word(setval));
                           ftcb.emit_tai(tai_const.create_16bit(setval),def);
                           ftcb.emit_tai(tai_const.create_16bit(setval),def);
                         end;
                         end;
                       4:
                       4:
                         begin
                         begin
-                          if source_info.endian<>target_info.endian then
-                            setval:=swap(setval);
+                          if target_info.endian=endian_big then
+                            setval:=swap(word(setval)) shl 16 or (swap(word(setval shr 16)));
                           ftcb.emit_tai(tai_const.create_32bit(setval),def);
                           ftcb.emit_tai(tai_const.create_32bit(setval),def);
                         end;
                         end;
                       else
                       else