Browse Source

* bug fix in tcg8086.a_load_reg_reg for loading larger register to a smaller one

git-svn-id: branches/i8086@23914 -
nickysn 12 years ago
parent
commit
c4cee15481
1 changed files with 5 additions and 13 deletions
  1. 5 13
      compiler/i8086/cgcpu.pas

+ 5 - 13
compiler/i8086/cgcpu.pas

@@ -728,25 +728,17 @@ unit cgcpu;
             list.concat(instr);
             list.concat(instr);
           end;
           end;
 
 
-//      var
-//        op: tasmop;
-//        s: topsize;
-//        instr:Taicpu;
       begin
       begin
         check_register_size(fromsize,reg1);
         check_register_size(fromsize,reg1);
         check_register_size(tosize,reg2);
         check_register_size(tosize,reg2);
 
 
-        if tcgsize2size[tosize]<=tcgsize2size[fromsize] then
-          fromsize:=tosize;
-
-{        if tcgsize2size[fromsize]>tcgsize2size[tosize] then
+        if tcgsize2size[fromsize]>tcgsize2size[tosize] then
           begin
           begin
+            if tosize in [OS_32, OS_S32] then
+              internalerror(2013031801);
             reg1:=makeregsize(list,reg1,tosize);
             reg1:=makeregsize(list,reg1,tosize);
-            s:=tcgsize2opsize[tosize];
-            op:=A_MOV;
-          end
-        else
-          sizes2load(fromsize,tosize,op,s);}
+            fromsize:=tosize;
+          end;
 
 
         if (reg1<>reg2) then
         if (reg1<>reg2) then
           begin
           begin