type __ghdl_integer is signed (32);

public function test_arg (v : __ghdl_integer) return __ghdl_integer
declare
  local var w : __ghdl_integer;
begin
  w := v;
  declare
    local var z : __ghdl_integer;
  begin
    z := v +# w;
    w := z;
  end;
  return w;
end;