Browse Source

* converted dynarray range checking to the high level code generator

git-svn-id: trunk@34115 -
Jonas Maebe 9 years ago
parent
commit
a821c47252
1 changed files with 8 additions and 10 deletions
  1. 8 10
      compiler/ncgmem.pas

+ 8 - 10
compiler/ncgmem.pas

@@ -774,23 +774,21 @@ implementation
                paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
                if pd.is_pushleftright then
                  begin
-                   cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.location,paraloc1);
-                   cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,right.location,paraloc2);
+                   hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.resultdef,left.location,paraloc1);
+                   hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,right.resultdef,right.location,paraloc2);
                  end
                else
                  begin
-                   cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,right.location,paraloc2);
-                   cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.location,paraloc1);
+                   hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,right.resultdef,right.location,paraloc2);
+                   hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.resultdef,left.location,paraloc1);
                  end;
                paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
                paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc2);
-               cg.allocallcpuregisters(current_asmdata.CurrAsmList);
-               cg.a_call_name(current_asmdata.CurrAsmList,'FPC_DYNARRAY_RANGECHECK',false);
-               cg.deallocallcpuregisters(current_asmdata.CurrAsmList);
+               hlcg.g_call_system_proc(current_asmdata.CurrAsmList,pd,[@paraloc1,@paraloc2],nil).resetiftemp;
             end;
-{ for regular arrays, we don't have to do anything because the index has been
-  type converted to the index type, which already inserted a range check if
-  necessary }
+         { for regular arrays, we don't have to do anything because the index has been
+           type converted to the index type, which already inserted a range check if
+           necessary }
          paraloc1.done;
          paraloc2.done;
        end;