* 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 -
This commit is contained in:
sergei 2012-01-14 04:34:39 +00:00
parent 88183dfcba
commit 898fbdcd26

View File

@ -409,6 +409,11 @@ implementation
hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]); hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]);
hvs.symoptions:=[]; hvs.symoptions:=[];
owner.insert(hvs); 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 end
else else
begin begin