Переглянути джерело

* Disallow placing hidden 'high' parameter in register if it will be accessed from implicit finally block (happens for <value open array of managed type> parameters).

git-svn-id: trunk@20072 -
sergei 13 роки тому
батько
коміт
898fbdcd26
1 змінених файлів з 5 додано та 0 видалено
  1. 5 0
      compiler/pdecsub.pas

+ 5 - 0
compiler/pdecsub.pas

@@ -409,6 +409,11 @@ implementation
                hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]);
                hvs.symoptions:=[];
                owner.insert(hvs);
+               { don't place to register if it will be accessed from implicit finally block }
+               if (varspez=vs_value) and
+                 is_open_array(vardef) and
+                 is_managed_type(vardef) then
+                 hvs.varregable:=vr_none;
              end
            else
             begin