program testbug;
{$APPTYPE CONSOLE}
{$ifdef fpc}
 {$mode delphi}
 {$ifdef cpui386}
  {$define cpu386}
 {$endif}
 {$ifdef cpu386}
  {$asmmode intel}
 {$endif}
 {$ifdef FPC_LITTLE_ENDIAN}
  {$define LITTLE_ENDIAN}
 {$else}
  {$ifdef FPC_BIG_ENDIAN}
   {$define BIG_ENDIAN}
  {$endif}
 {$endif}
 {$define caninline}
{$else}
 {$define LITTLE_ENDIAN}
 {$ifndef cpu64}
  {$define cpu32}
 {$endif}
{$endif}
{$ifdef win32}
 {$define windows}
{$endif}
{$ifdef win64}
 {$define windows}
{$endif}
{$ifdef wince}
 {$define windows}
{$endif}
{$rangechecks off}
{$extendedsyntax on}
{$hints off}
{$rangechecks off}
{$extendedsyntax on}
{$writeableconst on}
{$hints off}
{$booleval off}
{$typedaddress off}
{$stackframes off}
{$varstringchecks on}
{$typeinfo on}
{$overflowchecks off}
{$longstrings on}
{$openstrings on}
{$j+}
{$define UseRegister}

type TBla=(b0,b1,b2,b3,b4,b5);

     TBlas=set of TBla;
     
var b,ba:longbool;
    Blas:TBlas;
    
function BlaFunc(ABool:longbool):longbool;
begin
 result:=ABool;
end;

begin

 Blas:=[b1,b2,b3];
 b:=BlaFunc(b1 in Blas);
 ba:=true;
 writeln(b);
 writeln(longword(pointer(@b)^));
 if longword(pointer(@b)^)<>longword(pointer(@ba)^) then
   halt(1);
 if b<>ba then
   halt(1);
end.