diff options
author | Richard Henderson <rth@redhat.com> | 2015-01-12 08:19:59 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2015-01-12 08:19:59 -0800 |
commit | b1760f7f915a36ee9b4636fb54719c9b3ae59356 (patch) | |
tree | 1a64d747b069bdebf651d856989dd40a54daf0cc /libffi/src/raw_api.c | |
parent | 62e22fcb7985349b93646b86351033e1fb09c46c (diff) | |
download | gcc-b1760f7f915a36ee9b4636fb54719c9b3ae59356.tar.gz |
Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16
From-SVN: r219477
Diffstat (limited to 'libffi/src/raw_api.c')
-rw-r--r-- | libffi/src/raw_api.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libffi/src/raw_api.c b/libffi/src/raw_api.c index ce21372e299..276cb22807a 100644 --- a/libffi/src/raw_api.c +++ b/libffi/src/raw_api.c @@ -88,6 +88,10 @@ ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args) break; #endif + case FFI_TYPE_COMPLEX: + *args = (raw++)->ptr; + break; + case FFI_TYPE_POINTER: *args = (void*) &(raw++)->ptr; break; @@ -112,6 +116,11 @@ ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args) } else #endif + if ((*tp)->type == FFI_TYPE_COMPLEX) + { + *args = (raw++)->ptr; + } + else { *args = (void*) raw; raw += ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*); @@ -167,6 +176,10 @@ ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw) break; #endif + case FFI_TYPE_COMPLEX: + (raw++)->ptr = *args; + break; + case FFI_TYPE_POINTER: (raw++)->ptr = **(void***) args; break; |