1 /* { dg-do run } */
2 
3 #include "static-chain.h"
4 
5 #if defined(__GNUC__) && !defined(__clang__) && defined(STATIC_CHAIN_REG)
6 
7 #include "ffitest.h"
8 
9 /* Blatent assumption here that the prologue doesn't clobber the
10    static chain for trivial functions.  If this is not true, don't
11    define STATIC_CHAIN_REG, and we'll test what we can via other tests.  */
doit(void)12 void *doit(void)
13 {
14   register void *chain __asm__(STATIC_CHAIN_REG);
15   return chain;
16 }
17 
main()18 int main()
19 {
20   ffi_cif cif;
21   void *result;
22 
23   CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK);
24 
25   ffi_call_go(&cif, FFI_FN(doit), &result, NULL, &result);
26 
27   CHECK(result == &result);
28 
29   return 0;
30 }
31 
32 #else /* UNSUPPORTED */
main()33 int main() { return 0; }
34 #endif
35