瀏覽代碼

* better complexity estimation for some inline nodes

git-svn-id: trunk@27674 -
florian 11 年之前
父節點
當前提交
6dd2edb10d
共有 1 個文件被更改,包括 15 次插入6 次删除
  1. 15 6
      compiler/nutils.pas

+ 15 - 6
compiler/nutils.pas

@@ -716,14 +716,8 @@ implementation
                     in_trunc_real,
                     in_trunc_real,
                     in_int_real,
                     in_int_real,
                     in_frac_real,
                     in_frac_real,
-                    in_cos_real,
-                    in_sin_real,
-                    in_arctan_real,
                     in_pi_real,
                     in_pi_real,
                     in_abs_real,
                     in_abs_real,
-                    in_sqr_real,
-                    in_sqrt_real,
-                    in_ln_real,
                     in_aligned_x,
                     in_aligned_x,
                     in_unaligned_x,
                     in_unaligned_x,
                     in_prefetch_var:
                     in_prefetch_var:
@@ -731,6 +725,21 @@ implementation
                         inc(result);
                         inc(result);
                         p:=tunarynode(p).left;
                         p:=tunarynode(p).left;
                       end;
                       end;
+                    in_cos_real,
+                    in_sin_real,
+                    in_arctan_real,
+                    in_sqr_real,
+                    in_sqrt_real,
+                    in_ln_real:
+                      begin
+                        inc(result,2);
+                        if (result >= NODE_COMPLEXITY_INF) then
+                          begin
+                            result:=NODE_COMPLEXITY_INF;
+                            exit;
+                          end;
+                        p:=tunarynode(p).left;
+                      end;
                     in_abs_long:
                     in_abs_long:
                       begin
                       begin
                         inc(result,3);
                         inc(result,3);