瀏覽代碼

* taddnode.pass_typecheck_internal: always pass a tpointerdef to
get_int_type_for_pointer_arithmetic, even when adding a zero-based array with
a number

git-svn-id: trunk@28257 -

nickysn 11 年之前
父節點
當前提交
bb48761652
共有 1 個文件被更改,包括 5 次插入5 次删除
  1. 5 5
      compiler/nadd.pas

+ 5 - 5
compiler/nadd.pas

@@ -1967,7 +1967,7 @@ implementation
               end
             else
               resultdef:=right.resultdef;
-            inserttypeconv(left,get_int_type_for_pointer_arithmetic(rd));
+            inserttypeconv(left,get_int_type_for_pointer_arithmetic(right.resultdef));
             if nodetype=addn then
               begin
                 if (rt=niln) then
@@ -1981,7 +1981,7 @@ implementation
                    (tpointerdef(rd).pointeddef.size>1) then
                    begin
                      left:=caddnode.create(muln,left,
-                       cordconstnode.create(tpointerdef(rd).pointeddef.size,get_int_type_for_pointer_arithmetic(rd),true));
+                       cordconstnode.create(tpointerdef(rd).pointeddef.size,get_int_type_for_pointer_arithmetic(right.resultdef),true));
                      typecheckpass(left);
                    end;
               end
@@ -2000,7 +2000,7 @@ implementation
              else
                resultdef:=left.resultdef;
 
-             inserttypeconv(right,get_int_type_for_pointer_arithmetic(ld));
+             inserttypeconv(right,get_int_type_for_pointer_arithmetic(left.resultdef));
              if nodetype in [addn,subn] then
                begin
                  if (lt=niln) then
@@ -2017,7 +2017,7 @@ implementation
                    if (tpointerdef(ld).pointeddef.size>1) then
                    begin
                      right:=caddnode.create(muln,right,
-                       cordconstnode.create(tpointerdef(ld).pointeddef.size,get_int_type_for_pointer_arithmetic(ld),true));
+                       cordconstnode.create(tpointerdef(ld).pointeddef.size,get_int_type_for_pointer_arithmetic(left.resultdef),true));
                      typecheckpass(right);
                    end
                  end else
@@ -2025,7 +2025,7 @@ implementation
                       (tarraydef(ld).elementdef.size>1) then
                      begin
                        right:=caddnode.create(muln,right,
-                         cordconstnode.create(tarraydef(ld).elementdef.size,get_int_type_for_pointer_arithmetic(ld),true));
+                         cordconstnode.create(tarraydef(ld).elementdef.size,get_int_type_for_pointer_arithmetic(left.resultdef),true));
                        typecheckpass(right);
                      end;
                end