Edit

kc3-lang/libffi/testsuite/libffi.call/negint.c

Branch :

  • Show log

    Commit

  • Author : Anthony Green
    Date : 2013-02-09 06:54:40
    Hash : a9521411
    Message : sparc v8 and testsuite fixes

  • testsuite/libffi.call/negint.c
  • /* Area:	ffi_call
       Purpose:	Check that negative integers are passed correctly.
       Limitations:	none.
       PR:		none.
       Originator:	From the original ffitest.c  */
    
    /* { dg-do run } */
    
    #include "ffitest.h"
    
    static int checking(int a, short b, signed char c)
    {
    
      return (a < 0 && b < 0 && c < 0);
    }
    
    int main (void)
    {
      ffi_cif cif;
      ffi_type *args[MAX_ARGS];
      void *values[MAX_ARGS];
      ffi_arg rint;
    
      signed int si;
      signed short ss;
      signed char sc;
    
      args[0] = &ffi_type_sint;
      values[0] = &si;
      args[1] = &ffi_type_sshort;
      values[1] = &ss;
      args[2] = &ffi_type_schar;
      values[2] = &sc;
    
      /* Initialize the cif */
      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
    		     &ffi_type_sint, args) == FFI_OK);
    
      si = -6;
      ss = -12;
      sc = -1;
    
      checking (si, ss, sc);
    
      ffi_call(&cif, FFI_FN(checking), &rint, values);
    
      printf ("%d vs %d\n", (int)rint, checking (si, ss, sc));
    
      CHECK(rint != 0);
    
      exit (0);
    }