(root)/
gcc-13.2.0/
libffi/
testsuite/
libffi.call/
return_sl.c
       1  /* Area:	ffi_call
       2     Purpose:	Check if long as return type is handled correctly.
       3     Limitations:	none.
       4     PR:		none.
       5   */
       6  
       7  /* { dg-do run } */
       8  #include "ffitest.h"
       9  static long return_sl(long l1, long l2)
      10  {
      11    return l1 - l2;
      12  }
      13  
      14  int main (void)
      15  {
      16    ffi_cif cif;
      17    ffi_type *args[MAX_ARGS];
      18    void *values[MAX_ARGS];
      19    ffi_arg res;
      20    unsigned long l1, l2;
      21  
      22    args[0] = &ffi_type_slong;
      23    args[1] = &ffi_type_slong;
      24    values[0] = &l1;
      25    values[1] = &l2;
      26  
      27    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2,
      28  		     &ffi_type_slong, args) == FFI_OK);
      29  
      30    l1 = 1073741823L;
      31    l2 = 1073741824L;
      32  
      33    ffi_call(&cif, FFI_FN(return_sl), &res, values);
      34    printf("res: %ld, %ld\n", (long)res, l1 - l2);
      35    /* { dg-output "res: -1, -1" } */
      36  
      37    exit(0);
      38  }