Преглед изворни кода

* another loop counter copying fix

git-svn-id: trunk@49028 -
(cherry picked from commit a32a870f33a547985a175555c7de0c305612a324)
florian пре 4 година
родитељ
комит
7a77369d5e
1 измењених фајлова са 8 додато и 2 уклоњено
  1. 8 2
      compiler/nflw.pas

+ 8 - 2
compiler/nflw.pas

@@ -1567,13 +1567,19 @@ implementation
         usefromtemp : boolean;
 
       procedure iterate_counter(var s : tstatementnode;fw : boolean);
+        var
+          leftcopy: tnode;
         begin
+          { get rid of nf_write etc. as the left node is now only read }
+          leftcopy:=left.getcopy;
+          node_reset_flags(leftcopy,[nf_pass1_done,nf_modify,nf_write]);
+
           if fw then
             addstatement(s,
-              cassignmentnode.create_internal(left.getcopy,cinlinenode.createintern(in_succ_x,false,left.getcopy)))
+              cassignmentnode.create_internal(left.getcopy,cinlinenode.createintern(in_succ_x,false,leftcopy)))
           else
             addstatement(s,
-              cassignmentnode.create_internal(left.getcopy,cinlinenode.createintern(in_pred_x,false,left.getcopy)));
+              cassignmentnode.create_internal(left.getcopy,cinlinenode.createintern(in_pred_x,false,leftcopy)));
         end;
 
       function iterate_counter_func(arg : tnode;fw : boolean) : tnode;