summaryrefslogtreecommitdiff
path: root/test-suite
diff options
context:
space:
mode:
Diffstat (limited to 'test-suite')
-rwxr-xr-xtest-suite/standalone/test-ffi12
-rw-r--r--test-suite/standalone/test-ffi-lib.c6
2 files changed, 16 insertions, 2 deletions
diff --git a/test-suite/standalone/test-ffi b/test-suite/standalone/test-ffi
index ad686603e..4dabd29f5 100755
--- a/test-suite/standalone/test-ffi
+++ b/test-suite/standalone/test-ffi
@@ -99,6 +99,10 @@ exec guile -q -s "$0" "$@"
(pointer->procedure int16 (dynamic-func "test_ffi_s16_u8" lib) (list uint8)))
(test (f-s16-u8 10) -19990)
+(define f-s16-s8
+ (pointer->procedure int16 (dynamic-func "test_ffi_s16_s8" lib) (list int8)))
+(test (f-s16-s8 -10) -20010)
+
(define f-u16-u8
(pointer->procedure uint16 (dynamic-func "test_ffi_u16_u8" lib) (list uint8)))
(test (f-u16-u8 10) 40010)
@@ -166,8 +170,12 @@ exec guile -q -s "$0" "$@"
(define f-sum
(pointer->procedure int64 (dynamic-func "test_ffi_sum" lib)
(list int8 int16 int32 int64)))
-(test (f-sum -1 2000 -30000 40000000000)
- (+ -1 2000 -30000 40000000000))
+; test sign-extension of narrow arguments
+(test (f-sum -1 -2000 -30000 40000000000)
+ (+ -1 -2000 -30000 40000000000))
+; test zero-extension of narrow arguments
+(test (f-sum 1 2000 30000 40000000000)
+ (+ 1 2000 30000 40000000000))
;;
;; Structs
diff --git a/test-suite/standalone/test-ffi-lib.c b/test-suite/standalone/test-ffi-lib.c
index 37d6e43cc..50a200886 100644
--- a/test-suite/standalone/test-ffi-lib.c
+++ b/test-suite/standalone/test-ffi-lib.c
@@ -87,6 +87,12 @@ scm_t_int16 test_ffi_s16_u8 (scm_t_uint8 a)
return -20000 + a;
}
+scm_t_int16 test_ffi_s16_s8 (scm_t_int8 a);
+scm_t_int16 test_ffi_s16_s8 (scm_t_int8 a)
+{
+ return -20000 + a;
+}
+
scm_t_int16 test_ffi_s16_s64 (scm_t_int64 a);
scm_t_int16 test_ffi_s16_s64 (scm_t_int64 a)
{