http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57310
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Doesn't look like any kind of regression to me, seems on most architectures libffi behaved this way always. For the return value from ffi_call, most architectures sign or zero extend the sub-word values into word type (32-bit for 32-bit arches, 64-bit for 64-bit arches) and store the word. Looked as far back as libffi in gcc 3.2 and 3.3 for this. So your testcase is invalid in that regard, as you are passing &rc, where rc is int, not long. But there are testcases doing this in the libffi testsuite it seems, while others for ffi_type_sint and similar properly use address of ffi_arg value.