2
0
Эх сурвалжийг харах

Merges 22828,22829

git-svn-id: trunk@23756 -
florian 12 жил өмнө
parent
commit
08bf826334

+ 8 - 2
compiler/arm/cgcpu.pas

@@ -2359,6 +2359,12 @@ unit cgcpu;
             a_load_ref_reg(list,OS_32,OS_32,source,tmpreg);
             a_load_ref_reg(list,OS_32,OS_32,source,tmpreg);
             a_load_reg_ref(list,OS_32,OS_32,tmpreg,dest);
             a_load_reg_ref(list,OS_32,OS_32,tmpreg,dest);
           end
           end
+        else if aligned and (len=2) then
+          begin
+            tmpreg:=getintregister(list,OS_16);
+            a_load_ref_reg(list,OS_16,OS_16,source,tmpreg);
+            a_load_reg_ref(list,OS_16,OS_16,tmpreg,dest);
+          end
         else if (len<=helpsize) and aligned then
         else if (len<=helpsize) and aligned then
           begin
           begin
             tmpregi:=0;
             tmpregi:=0;
@@ -2486,8 +2492,8 @@ unit cgcpu;
 
 
     procedure tbasecgarm.g_concatcopy(list : TAsmList;const source,dest : treference;len : tcgint);
     procedure tbasecgarm.g_concatcopy(list : TAsmList;const source,dest : treference;len : tcgint);
       begin
       begin
-        if (source.alignment in [1..3]) or
-          (dest.alignment in [1..3]) then
+        if (source.alignment in [1,3]) or
+          (dest.alignment in [1,3]) then
           g_concatcopy_internal(list,source,dest,len,false)
           g_concatcopy_internal(list,source,dest,len,false)
         else
         else
           g_concatcopy_internal(list,source,dest,len,true);
           g_concatcopy_internal(list,source,dest,len,true);

+ 2 - 2
compiler/systems/i_embed.pas

@@ -79,8 +79,8 @@ unit i_embed;
                 constalignmax   : 4;
                 constalignmax   : 4;
                 varalignmin     : 0;
                 varalignmin     : 0;
                 varalignmax     : 4;
                 varalignmax     : 4;
-                localalignmin   : 4;
-                localalignmax   : 8;
+                localalignmin   : 0;
+                localalignmax   : 4;
                 recordalignmin  : 0;
                 recordalignmin  : 0;
                 recordalignmax  : 4;
                 recordalignmax  : 4;
                 maxCrecordalign : 4
                 maxCrecordalign : 4