PageRenderTime 30ms CodeModel.GetById 15ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c

http://github.com/zpao/v8monkey
C | 47 lines | 27 code | 8 blank | 12 comment | 2 complexity | e2793918ba20624ce732ad88c3d61093 MD5 | raw file
 1/* Area:	closure_call
 2   Purpose:	Check return value long long.
 3   Limitations:	none.
 4   PR:		none.
 5   Originator:	<andreast@gcc.gnu.org> 20030828	 */
 6
 7/* { dg-do run } */
 8/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */
 9#include "ffitest.h"
10
11static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp,
12				 void** args, void* userdata __UNUSED__)
13{
14  *(unsigned long long *)resp=  *(unsigned long long *)args[0];
15
16  printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0],
17	 *(unsigned long long *)(resp));
18}
19typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long);
20
21int main (void)
22{
23  ffi_cif cif;
24  void *code;
25  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
26  ffi_type * cl_arg_types[2];
27  unsigned long long res;
28
29  cl_arg_types[0] = &ffi_type_uint64;
30  cl_arg_types[1] = NULL;
31
32  /* Initialize the cif */
33  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
34		     &ffi_type_uint64, cl_arg_types) == FFI_OK);
35  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code)  == FFI_OK);
36  res = (*((cls_ret_ulonglong)code))(214LL);
37  /* { dg-output "214: 214" } */
38  printf("res: %" PRIdLL "\n", res);
39  /* { dg-output "\nres: 214" } */
40
41  res = (*((cls_ret_ulonglong)code))(9223372035854775808LL);
42  /* { dg-output "\n9223372035854775808: 9223372035854775808" } */
43  printf("res: %" PRIdLL "\n", res);
44  /* { dg-output "\nres: 9223372035854775808" } */
45
46  exit(0);
47}