Browse Source

* tcgx86.a_op_const_reg_reg: optimize trivial cases before considering more complex ones.

git-svn-id: trunk@27892 -
sergei 11 years ago
parent
commit
ae627a4ba8
1 changed files with 13 additions and 0 deletions
  1. 13 0
      compiler/x86/cgx86.pas

+ 13 - 0
compiler/x86/cgx86.pas

@@ -1570,6 +1570,19 @@ unit cgx86;
         href : treference;
       begin
         power:=0;
+        optimize_op_const(size,op,a);
+        case op of
+          OP_NONE:
+            begin
+              a_load_reg_reg(list,size,size,src,dst);
+              exit;
+            end;
+          OP_MOVE:
+            begin
+              a_load_const_reg(list,size,a,dst);
+              exit;
+            end;
+        end;
         if (op in [OP_MUL,OP_IMUL]) and (size in [OS_32,OS_S32,OS_64,OS_S64]) and
           not(cs_check_overflow in current_settings.localswitches) and
           (a>1) and ispowerof2(int64(a-1),power) and (power in [1..3]) then