浏览代码

--- Merging r44055 into '.':
U compiler/ncnv.pas
--- Recording mergeinfo for merge of r44055 into '.':
U .
--- Merging r44098 into '.':
G compiler/ncnv.pas
--- Recording mergeinfo for merge of r44098 into '.':
G .
--- Merging r44099 into '.':
G compiler/ncnv.pas
--- Recording mergeinfo for merge of r44099 into '.':
G .

# revisions: 44055,44098,44099

git-svn-id: branches/fixes_3_2@44223 -

marco 5 年之前
父节点
当前提交
8172b79be1
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      compiler/ncnv.pas

+ 12 - 0
compiler/ncnv.pas

@@ -1491,11 +1491,13 @@ implementation
             begin
               result:=caddnode.create(muln,getcopy,cordconstnode.create(10000,resultdef,false));
               include(result.flags,nf_is_currency);
+              include(taddnode(result).left.flags,nf_internal);
             end
            else if is_currency(left.resultdef) then
             begin
               result:=cmoddivnode.create(divn,getcopy,cordconstnode.create(10000,resultdef,false));
               include(result.flags,nf_is_currency);
+              include(taddnode(result).left.flags,nf_internal);
             end;
          end;
       end;
@@ -2902,6 +2904,7 @@ implementation
     function ttypeconvnode.simplify(forinline : boolean): tnode;
       var
         hp: tnode;
+        v: Tconstexprint;
 {$ifndef CPUNO32BITOPS}
         foundsint: boolean;
 {$endif not CPUNO32BITOPS}
@@ -3088,6 +3091,15 @@ implementation
                    result:=left;
                    left:=nil;
                    exit;
+                end
+              else if (convtype=tc_int_2_int) and
+                is_currency(resultdef) then
+                begin
+                  v:=tordconstnode(left).value;
+                  if not(nf_internal in flags) and not(is_currency(left.resultdef)) then
+                    v:=v*10000;
+                  result:=cordconstnode.create(v,resultdef,false);
+                  exit;
                 end;
             end;