ソースを参照

* don't do tail recursion optimization on types requiring init/final code

git-svn-id: trunk@6031 -
florian 18 年 前
コミット
42cf5f7b2b
1 ファイル変更6 行追加1 行削除
  1. 6 1
      compiler/opttail.pas

+ 6 - 1
compiler/opttail.pas

@@ -186,7 +186,12 @@ unit opttail;
           with tparavarsym(p.paras[i]) do
           with tparavarsym(p.paras[i]) do
             if (varspez in [vs_out,vs_var]) or
             if (varspez in [vs_out,vs_var]) or
               ((varspez=vs_const) and
               ((varspez=vs_const) and
-               (paramanager.push_addr_param(varspez,vardef,p.proccalloption))) then
+               (paramanager.push_addr_param(varspez,vardef,p.proccalloption)) or
+               { parameters requiring tables are too complicated to handle
+                 and slow down things anyways so a tail recursion call
+                 makes no sense
+               }
+               vardef.needs_inittable) then
                exit;
                exit;
 
 
         labelnode:=clabelnode.create(cnothingnode.create);
         labelnode:=clabelnode.create(cnothingnode.create);