xref: /llvm-project/lld/test/wasm/duplicate-function-imports.s (revision 1d445a6e7679cc188fd051f7397b7d9ca8ce4f10)
1*1d445a6eSNick Fitzgerald# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o
2*1d445a6eSNick Fitzgerald# RUN: wasm-ld -o %t1.wasm %t.o
3*1d445a6eSNick Fitzgerald# RUN: obj2yaml %t1.wasm | FileCheck %s
4*1d445a6eSNick Fitzgerald
5*1d445a6eSNick Fitzgerald.globl f1
6*1d445a6eSNick Fitzgerald.import_module f1, env
7*1d445a6eSNick Fitzgerald.import_name f1, f
8*1d445a6eSNick Fitzgerald.functype f1 () -> (i32)
9*1d445a6eSNick Fitzgerald
10*1d445a6eSNick Fitzgerald# Same import module/name/type as `f1`, should be de-duped.
11*1d445a6eSNick Fitzgerald.globl f2
12*1d445a6eSNick Fitzgerald.import_module f2, env
13*1d445a6eSNick Fitzgerald.import_name f2, f
14*1d445a6eSNick Fitzgerald.functype f2 () -> (i32)
15*1d445a6eSNick Fitzgerald
16*1d445a6eSNick Fitzgerald# Same import module/name, but different type. Should not be de-duped.
17*1d445a6eSNick Fitzgerald.globl f3
18*1d445a6eSNick Fitzgerald.import_module f3, env
19*1d445a6eSNick Fitzgerald.import_name f3, f
20*1d445a6eSNick Fitzgerald.functype f3 () -> (f32)
21*1d445a6eSNick Fitzgerald
22*1d445a6eSNick Fitzgerald.globl _start
23*1d445a6eSNick Fitzgerald_start:
24*1d445a6eSNick Fitzgerald  .functype _start () -> ()
25*1d445a6eSNick Fitzgerald  call f1
26*1d445a6eSNick Fitzgerald  drop
27*1d445a6eSNick Fitzgerald  call f2
28*1d445a6eSNick Fitzgerald  drop
29*1d445a6eSNick Fitzgerald  call f3
30*1d445a6eSNick Fitzgerald  drop
31*1d445a6eSNick Fitzgerald  end_function
32*1d445a6eSNick Fitzgerald
33*1d445a6eSNick Fitzgerald
34*1d445a6eSNick Fitzgerald# CHECK:        - Type:            TYPE
35*1d445a6eSNick Fitzgerald# CHECK-NEXT:     Signatures:
36*1d445a6eSNick Fitzgerald# CHECK-NEXT:       - Index:           0
37*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ParamTypes:      []
38*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ReturnTypes:
39*1d445a6eSNick Fitzgerald# CHECK-NEXT:           - I32
40*1d445a6eSNick Fitzgerald# CHECK-NEXT:       - Index:           1
41*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ParamTypes:      []
42*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ReturnTypes:
43*1d445a6eSNick Fitzgerald# CHECK-NEXT:           - F32
44*1d445a6eSNick Fitzgerald# CHECK-NEXT:       - Index:           2
45*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ParamTypes:      []
46*1d445a6eSNick Fitzgerald# CHECK-NEXT:         ReturnTypes:     []
47*1d445a6eSNick Fitzgerald# CHECK-NEXT:   - Type:            IMPORT
48*1d445a6eSNick Fitzgerald# CHECK-NEXT:     Imports:
49*1d445a6eSNick Fitzgerald# CHECK-NEXT:       - Module:          env
50*1d445a6eSNick Fitzgerald# CHECK-NEXT:         Field:           f
51*1d445a6eSNick Fitzgerald# CHECK-NEXT:         Kind:            FUNCTION
52*1d445a6eSNick Fitzgerald# CHECK-NEXT:         SigIndex:        0
53*1d445a6eSNick Fitzgerald# CHECK-NEXT:       - Module:          env
54*1d445a6eSNick Fitzgerald# CHECK-NEXT:         Field:           f
55*1d445a6eSNick Fitzgerald# CHECK-NEXT:         Kind:            FUNCTION
56*1d445a6eSNick Fitzgerald# CHECK-NEXT:         SigIndex:        1
57*1d445a6eSNick Fitzgerald# CHECK-NEXT:   - Type:
58