浏览代码

* handle non-smallset sets in registers in LLVM like arrays and records

git-svn-id: trunk@43884 -
Jonas Maebe 5 年之前
父节点
当前提交
9462d6b1ea
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      compiler/llvm/hlcgllvm.pas

+ 4 - 1
compiler/llvm/hlcgllvm.pas

@@ -695,6 +695,7 @@ implementation
                 pass via a temp in that case
               }
               if (fromsize.typ in [arraydef,recorddef]) or
+                 (is_set(fromsize) and not is_smallset(fromsize)) or
                  (tosize.size in [3,5,6,7]) then
                 begin
                   { store struct/array-in-register to memory }
@@ -901,7 +902,9 @@ implementation
       else
         begin
           if ((fromsize.typ in [arraydef,recorddef]) or
-              (tosize.typ in [arraydef,recorddef])) and
+              (tosize.typ in [arraydef,recorddef]) or
+              (is_set(fromsize) and not is_smallset(fromsize)) or
+              (is_set(tosize) and not is_smallset(tosize))) and
              (fromsize<>tosize) then
             begin
               if handle_agg_load_ref_anyreg(list,fromsize,tosize,sref,register,nil) then