瀏覽代碼

* simplified in_smallset() and removed some old cruft (there's no need
anymore to change the register size)

git-svn-id: branches/hlcgllvm@28400 -

Jonas Maebe 11 年之前
父節點
當前提交
c6ddf0001c
共有 2 個文件被更改,包括 8 次插入11 次删除
  1. 3 3
      compiler/arm/narmset.pas
  2. 5 8
      compiler/ncgset.pas

+ 3 - 3
compiler/arm/narmset.pas

@@ -37,7 +37,7 @@ interface
 
        tarminnode = class(tcginnode)
          function pass_1: tnode; override;
-         procedure in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint); override;
+         procedure in_smallset(opdef: tdef; setbase: aint); override;
        end;
 
       tarmcasenode = class(tcgcasenode)
@@ -77,7 +77,7 @@ implementation
           end;
       end;
 
-    procedure tarminnode.in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint);
+    procedure tarminnode.in_smallset(opdef: tdef; setbase: aint);
       var
         so : tshifterop;
         hregister : tregister;
@@ -101,7 +101,7 @@ implementation
             hlcg.location_force_reg(current_asmdata.CurrAsmList, right.location,
              right.resultdef, right.resultdef, true);
 
-            hregister:=cg.getintregister(current_asmdata.CurrAsmList, uopsize);
+            hregister:=hlcg.getintregister(current_asmdata.CurrAsmList, opdef);
             current_asmdata.CurrAsmList.concat(taicpu.op_reg_const(A_MOV,hregister,1));
 
             if GenerateThumbCode or GenerateThumb2Code then

+ 5 - 8
compiler/ncgset.pas

@@ -44,7 +44,7 @@ interface
        { tcginnode }
 
        tcginnode = class(tinnode)
-         procedure in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint); virtual;
+         procedure in_smallset(opdef: tdef; setbase: aint); virtual;
 
          function pass_1: tnode;override;
          procedure pass_generate_code;override;
@@ -182,12 +182,12 @@ implementation
     end;
 
 
-    procedure tcginnode.in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint);
+    procedure tcginnode.in_smallset(opdef: tdef; setbase: aint);
       begin
         { location is always LOC_REGISTER }
-        location_reset(location, LOC_REGISTER, uopsize{def_cgsize(resultdef)});
+        location_reset(location, LOC_REGISTER, def_cgsize(resultdef));
         { allocate a register for the result }
-        location.register := cg.getintregister(current_asmdata.CurrAsmList, uopsize);
+        location.register := hlcg.getintregister(current_asmdata.CurrAsmList, resultdef);
         {****************************  SMALL SET **********************}
         if left.location.loc=LOC_CONSTANT then
           begin
@@ -206,9 +206,6 @@ implementation
               right.resultdef, resultdef, left.location.register, right.location,
                location.register);
           end;
-        location.size := def_cgsize(resultdef);
-        location.register := cg.makeregsize(current_asmdata.CurrAsmList,
-        location.register, location.size);
       end;
 
 
@@ -406,7 +403,7 @@ implementation
                handle smallsets separate, because it allows faster checks }
              if use_small then
                begin
-                 in_smallset(uopsize, opdef, setbase);
+                 in_smallset(opdef, setbase);
                end
              else
                {************************** NOT SMALL SET ********************}