From bug-2663.c
I tried to make the test work in the non stack-auto configuration by using the __reentrant keyword.
If i define a new type and cast to it everything works fine as expected.
static int cmp_eq (long arg1, long arg2) __reentrant
...
typedef int (*funcp)(long, long) __reentrant ;
...
ASSERT(((funcp)(string_binop1[0].op_func))(1, 1) == 0);
However, there is no place I could put the __reentrant keyword to make the explicit cast compile.
ASSERT(((int (*)(long, long))(string_binop1[0].op_func))(1, 1) == 0);
i.e.
ASSERT(((int (*)(long, long) __reentrant)(string_binop1[0].op_func))(1, 1) == 0);
produces a syntax error.