| /* { dg-do run } */ | 
 |  | 
 | #include "static-chain.h" | 
 |  | 
 | #if defined(__GNUC__) && !defined(__clang__) && defined(STATIC_CHAIN_REG) | 
 |  | 
 | #include "ffitest.h" | 
 |  | 
 | /* Blatent assumption here that the prologue doesn't clobber the | 
 |    static chain for trivial functions.  If this is not true, don't | 
 |    define STATIC_CHAIN_REG, and we'll test what we can via other tests.  */ | 
 | void *doit(void) | 
 | { | 
 |   register void *chain __asm__(STATIC_CHAIN_REG); | 
 |   return chain; | 
 | } | 
 |  | 
 | int main() | 
 | { | 
 |   ffi_cif cif; | 
 |   void *result; | 
 |  | 
 |   CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK); | 
 |  | 
 |   ffi_call_go(&cif, FFI_FN(doit), &result, NULL, &result); | 
 |  | 
 |   CHECK(result == &result); | 
 |  | 
 |   return 0; | 
 | } | 
 |  | 
 | #else /* UNSUPPORTED */ | 
 | int main() { return 0; } | 
 | #endif |