ソースを参照

* pass only non specialized arrays in registers on win x64

git-svn-id: trunk@4585 -
florian 19 年 前
コミット
819dec1411
2 ファイル変更4 行追加1 行削除
  1. 3 1
      compiler/defutil.pas
  2. 1 0
      compiler/x86_64/cpupara.pas

+ 3 - 1
compiler/defutil.pas

@@ -120,6 +120,8 @@ interface
        That is if the array is an open array, a variant
        array, an array constants constructor, or an
        array of const.
+
+       Bitpacked arrays aren't special in this regard though.
     }
     function is_special_array(p : tdef) : boolean;
 
@@ -534,7 +536,7 @@ implementation
                  (ado_IsArrayOfConst in tarraydef(p).arrayoptions);
       end;
 
-    { true, if p points to a special array }
+    { true, if p points to a special array, bitpacked arrays aren't special in this regard though }
     function is_special_array(p : tdef) : boolean;
       begin
          result:=(p.deftype=arraydef) and

+ 1 - 0
compiler/x86_64/cpupara.pas

@@ -123,6 +123,7 @@ unit cpupara;
            arraydef:
              begin
                if (target_info.system=system_x86_64_win64) and
+                  not(is_special_array(p)) and
                   (p.size<=8)  then
                  loc1:=LOC_REGISTER
                else