diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/dot_s/indirect-import.c | 6 | ||||
-rw-r--r-- | test/dot_s/indirect-import.s | 14 | ||||
-rw-r--r-- | test/dot_s/indirect-import.wast | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/test/dot_s/indirect-import.c b/test/dot_s/indirect-import.c index 006424d84..679d862c7 100644 --- a/test/dot_s/indirect-import.c +++ b/test/dot_s/indirect-import.c @@ -23,5 +23,9 @@ intptr_t bar() { ijidf(1LL, 2, 3.0, 4.0f); void (*vs)(struct big) = &extern_struct; struct big (*s)(void) = &extern_sret; - return (intptr_t)fd; + return (intptr_t)fd; +} + +intptr_t baz() { + return (intptr_t)extern_v; } diff --git a/test/dot_s/indirect-import.s b/test/dot_s/indirect-import.s index 5131d86f3..f09291d84 100644 --- a/test/dot_s/indirect-import.s +++ b/test/dot_s/indirect-import.s @@ -45,8 +45,20 @@ bar: # @bar .Lfunc_end0: .size bar, .Lfunc_end0-bar + .hidden baz + .globl baz + .type baz,@function +baz: # @baz + .result i32 +# BB#0: # %entry + i32.const $push0=, extern_v@FUNCTION + # fallthrough-return: $pop0 + .endfunc +.Lfunc_end1: + .size baz, .Lfunc_end1-baz + - .ident "clang version 3.9.0 (trunk 271427) (llvm/trunk 271429)" + .ident "clang version 3.9.0 (trunk 271579) (llvm/trunk 271699)" .functype extern_fd, f32, f64 .functype extern_vj, void, i64 .functype extern_v, void diff --git a/test/dot_s/indirect-import.wast b/test/dot_s/indirect-import.wast index f3a989461..b24b5cd59 100644 --- a/test/dot_s/indirect-import.wast +++ b/test/dot_s/indirect-import.wast @@ -13,6 +13,7 @@ (import $extern_struct "env" "extern_struct" (param i32)) (import $extern_sret "env" "extern_sret" (param i32)) (export "bar" $bar) + (export "baz" $baz) (export "dynCall_fd" $dynCall_fd) (export "dynCall_vj" $dynCall_vj) (export "dynCall_v" $dynCall_v) @@ -80,6 +81,9 @@ ) (get_local $1) ) + (func $baz (result i32) + (i32.const 2) + ) (func $__importThunk_extern_fd (type $FUNCSIG$fd) (param $0 f64) (result f32) (call_import $extern_fd (get_local $0) |