浏览代码

* in case a 32x32 -> 64 multiplication is converted into shl, the type casts need to be restored

git-svn-id: trunk@44197 -
florian 5 年之前
父节点
当前提交
27e89e07a3
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      compiler/nadd.pas

+ 4 - 0
compiler/nadd.pas

@@ -3903,6 +3903,10 @@ implementation
                  ((right.nodetype = ordconstn) and
                   ispowerof2(tordconstnode(right).value,i2))) then
                begin
+                 { it could be that we are converting a 32x32 -> 64 multiplication:
+                   in this case, we have to restore the type conversion }
+                 inserttypeconv_internal(left,resultdef);
+                 inserttypeconv_internal(right,resultdef);
                  if ((left.nodetype = ordconstn) and
                      ispowerof2(tordconstnode(left).value,i)) then
                    begin