1 ; RUN: llc -mtriple=wasm32-unknown-unknown-wasm -filetype=obj -o %t.o %s
2 ; RUN: llc -mtriple=wasm32-unknown-unknown-wasm -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o
3 ; RUN: lld -flavor wasm %t.o %t2.o -o %t.wasm
4 ; RUN: obj2yaml %t.wasm | FileCheck %s
6 ; Test that the strongly defined alias_fn from this file is used both here
9 define i32 @alias_fn() local_unnamed_addr #1 {
13 ; Function Attrs: nounwind uwtable
14 define void @_start() local_unnamed_addr #1 {
16 %call = tail call i32 @alias_fn() #2
21 ; CHECK-NEXT: FileHeader:
22 ; CHECK-NEXT: Version: 0x00000001
23 ; CHECK-NEXT: Sections:
24 ; CHECK-NEXT: - Type: TYPE
25 ; CHECK-NEXT: Signatures:
26 ; CHECK-NEXT: - Index: 0
27 ; CHECK-NEXT: ReturnType: I32
28 ; CHECK-NEXT: ParamTypes:
29 ; CHECK-NEXT: - Index: 1
30 ; CHECK-NEXT: ReturnType: NORESULT
31 ; CHECK-NEXT: ParamTypes:
32 ; CHECK-NEXT: - Type: FUNCTION
33 ; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0 ]
34 ; CHECK-NEXT: - Type: TABLE
36 ; CHECK-NEXT: - ElemType: ANYFUNC
38 ; CHECK-NEXT: Flags: [ HAS_MAX ]
39 ; CHECK-NEXT: Initial: 0x00000003
40 ; CHECK-NEXT: Maximum: 0x00000003
41 ; CHECK-NEXT: - Type: MEMORY
42 ; CHECK-NEXT: Memories:
43 ; CHECK-NEXT: - Initial: 0x00000002
44 ; CHECK-NEXT: - Type: GLOBAL
45 ; CHECK-NEXT: Globals:
46 ; CHECK-NEXT: - Type: I32
47 ; CHECK-NEXT: Mutable: true
48 ; CHECK-NEXT: InitExpr:
49 ; CHECK-NEXT: Opcode: I32_CONST
50 ; CHECK-NEXT: Value: 66560
51 ; CHECK-NEXT: - Type: EXPORT
52 ; CHECK-NEXT: Exports:
53 ; CHECK-NEXT: - Name: memory
54 ; CHECK-NEXT: Kind: MEMORY
55 ; CHECK-NEXT: Index: 0
56 ; CHECK-NEXT: - Name: _start
57 ; CHECK-NEXT: Kind: FUNCTION
58 ; CHECK-NEXT: Index: 1
59 ; CHECK-NEXT: - Name: alias_fn
60 ; CHECK-NEXT: Kind: FUNCTION
61 ; CHECK-NEXT: Index: 0
62 ; CHECK-NEXT: - Name: direct_fn
63 ; CHECK-NEXT: Kind: FUNCTION
64 ; CHECK-NEXT: Index: 2
65 ; CHECK-NEXT: - Name: call_direct
66 ; CHECK-NEXT: Kind: FUNCTION
67 ; CHECK-NEXT: Index: 3
68 ; CHECK-NEXT: - Name: call_alias
69 ; CHECK-NEXT: Kind: FUNCTION
70 ; CHECK-NEXT: Index: 4
71 ; CHECK-NEXT: - Name: call_alias_ptr
72 ; CHECK-NEXT: Kind: FUNCTION
73 ; CHECK-NEXT: Index: 5
74 ; CHECK-NEXT: - Name: call_direct_ptr
75 ; CHECK-NEXT: Kind: FUNCTION
76 ; CHECK-NEXT: Index: 6
77 ; CHECK-NEXT: - Type: ELEM
78 ; CHECK-NEXT: Segments:
79 ; CHECK-NEXT: - Offset:
80 ; CHECK-NEXT: Opcode: I32_CONST
81 ; CHECK-NEXT: Value: 1
82 ; CHECK-NEXT: Functions: [ 0, 2 ]
83 ; CHECK-NEXT: - Type: CODE
84 ; CHECK-NEXT: Functions:
85 ; CHECK-NEXT: - Locals:
86 ; CHECK-NEXT: Body: 41010B
87 ; CHECK-NEXT: - Locals:
88 ; CHECK-NEXT: Body: 1080808080001A0B
89 ; CHECK-NEXT: - Locals:
90 ; CHECK-NEXT: Body: 41000B
91 ; CHECK-NEXT: - Locals:
92 ; CHECK-NEXT: Body: 1082808080000B
93 ; CHECK-NEXT: - Locals:
94 ; CHECK-NEXT: Body: 1080808080000B
95 ; CHECK-NEXT: - Locals:
96 ; CHECK-NEXT: - Type: I32
97 ; CHECK-NEXT: Count: 2
98 ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081080808080002101200041106A24808080800020010B
99 ; CHECK-NEXT: - Locals:
100 ; CHECK-NEXT: - Type: I32
101 ; CHECK-NEXT: Count: 2
102 ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081082808080002101200041106A24808080800020010B
103 ; CHECK-NEXT: - Type: CUSTOM
104 ; CHECK-NEXT: Name: linking
105 ; CHECK-NEXT: DataSize: 0
106 ; CHECK-NEXT: - Type: CUSTOM
107 ; CHECK-NEXT: Name: name
108 ; CHECK-NEXT: FunctionNames:
109 ; CHECK-NEXT: - Index: 0
110 ; CHECK-NEXT: Name: alias_fn
111 ; CHECK-NEXT: - Index: 1
112 ; CHECK-NEXT: Name: _start
113 ; CHECK-NEXT: - Index: 2
114 ; CHECK-NEXT: Name: direct_fn
115 ; CHECK-NEXT: - Index: 3
116 ; CHECK-NEXT: Name: call_direct
117 ; CHECK-NEXT: - Index: 4
118 ; CHECK-NEXT: Name: call_alias
119 ; CHECK-NEXT: - Index: 5
120 ; CHECK-NEXT: Name: call_alias_ptr
121 ; CHECK-NEXT: - Index: 6
122 ; CHECK-NEXT: Name: call_direct_ptr