{ %fail } { %cpu=i386 } { This test expects values on the stack, which is i386 only } { This test should fail, because it can indeed only ever work on i386, and even there the default typing by the compiler is wrong. } { sixth simple array of const test for int64 values } {$mode objfpc} program test_cdecl_array_of_const; type pint64 = ^int64; var l : int64; const has_errors : boolean = false; procedure test_one_int64(args : array of const);cdecl; var p : pint64; begin p:=pint64(@args); l:=p^; end; procedure test_two_int64(args : array of const);cdecl; var p : pint64; begin p:=pint64(@args); inc(pointer(p),sizeof(int64)); l:=p^; end; var i,j : int64; begin i:=$65ffffff; i:=i*5698; j:=2*i; test_one_int64([i]); if l<>i then has_errors:=true; l:=4; test_one_int64([j,i]); if l<>j then has_errors:=true; l:=4; test_one_int64([i+j,i,j]); if l<>i+j then has_errors:=true; l:=4; test_two_int64([i+j,j-i]); if l<>j-i then has_errors:=true; if has_errors then begin Writeln('cdecl array of const problem for int64'); halt(1); end; end.