Browse Source

* reprocess changed typeconvn in doremoveinttypeconvs(), as the changed
resultdef can result in a different type conversion (e.g. from nothing
to int_2_int in case the result size changes)

git-svn-id: trunk@32338 -

Jonas Maebe 9 years ago
parent
commit
6677747d74
1 changed files with 4 additions and 1 deletions
  1. 4 1
      compiler/ncnv.pas

+ 4 - 1
compiler/ncnv.pas

@@ -2597,8 +2597,11 @@ implementation
             end;
             end;
           typeconvn:
           typeconvn:
             begin
             begin
-              n.resultdef:=todef;
               ttypeconvnode(n).totypedef:=todef;
               ttypeconvnode(n).totypedef:=todef;
+              { may change the type conversion, e.g. if the old conversion was
+                from 64 bit to a 64 bit, and now becomes 64 bit to 32 bit }
+              n.resultdef:=nil;
+              typecheckpass(n);
             end;
             end;
           else
           else
             inserttypeconv_internal(n,todef);
             inserttypeconv_internal(n,todef);