/* { 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