blob: 1a991466e9b719a1652591a01a22da8edab4c4d8 [file] [log] [blame]
Sam Clegg70683b22018-01-24 03:29:47 +00001; RUN: llc -filetype=obj -o %t.o %s
2; RUN: llc -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o
Sam Clegg279c8502018-02-02 00:30:03 +00003; RUN: lld -flavor wasm --check-signatures %t.o %t2.o -o %t.wasm
Sam Cleggc94d3932017-11-17 18:14:09 +00004; RUN: obj2yaml %t.wasm | FileCheck %s
5
Sam Cleggc6e4d732017-12-21 02:30:09 +00006; Test that the strongly defined alias_fn from this file is used both here
7; and in call_alias.
Sam Cleggc94d3932017-11-17 18:14:09 +00008
Sam Clegg70683b22018-01-24 03:29:47 +00009target triple = "wasm32-unknown-unknown-wasm"
10
Sam Cleggc6e4d732017-12-21 02:30:09 +000011define i32 @alias_fn() local_unnamed_addr #1 {
Sam Cleggc94d3932017-11-17 18:14:09 +000012 ret i32 1
13}
14
15; Function Attrs: nounwind uwtable
16define void @_start() local_unnamed_addr #1 {
17entry:
Sam Cleggc6e4d732017-12-21 02:30:09 +000018 %call = tail call i32 @alias_fn() #2
Sam Cleggc94d3932017-11-17 18:14:09 +000019 ret void
20}
21
22; CHECK: --- !WASM
Rui Ueyama1ce416c2017-12-12 20:00:30 +000023; CHECK-NEXT: FileHeader:
Sam Cleggc94d3932017-11-17 18:14:09 +000024; CHECK-NEXT: Version: 0x00000001
Rui Ueyama1ce416c2017-12-12 20:00:30 +000025; CHECK-NEXT: Sections:
Sam Cleggc94d3932017-11-17 18:14:09 +000026; CHECK-NEXT: - Type: TYPE
Rui Ueyama1ce416c2017-12-12 20:00:30 +000027; CHECK-NEXT: Signatures:
Sam Cleggc94d3932017-11-17 18:14:09 +000028; CHECK-NEXT: - Index: 0
29; CHECK-NEXT: ReturnType: I32
Rui Ueyama1ce416c2017-12-12 20:00:30 +000030; CHECK-NEXT: ParamTypes:
Sam Cleggc94d3932017-11-17 18:14:09 +000031; CHECK-NEXT: - Index: 1
32; CHECK-NEXT: ReturnType: NORESULT
Rui Ueyama1ce416c2017-12-12 20:00:30 +000033; CHECK-NEXT: ParamTypes:
Sam Cleggc94d3932017-11-17 18:14:09 +000034; CHECK-NEXT: - Type: FUNCTION
Sam Clegg50686852018-01-12 18:35:13 +000035; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0, 1 ]
Sam Cleggc94d3932017-11-17 18:14:09 +000036; CHECK-NEXT: - Type: TABLE
Rui Ueyama1ce416c2017-12-12 20:00:30 +000037; CHECK-NEXT: Tables:
Sam Cleggc94d3932017-11-17 18:14:09 +000038; CHECK-NEXT: - ElemType: ANYFUNC
Rui Ueyama1ce416c2017-12-12 20:00:30 +000039; CHECK-NEXT: Limits:
Sam Clegg30b013b2017-12-14 00:34:25 +000040; CHECK-NEXT: Flags: [ HAS_MAX ]
Sam Clegg5cfffbc2017-12-22 20:35:19 +000041; CHECK-NEXT: Initial: 0x00000003
42; CHECK-NEXT: Maximum: 0x00000003
Sam Cleggc94d3932017-11-17 18:14:09 +000043; CHECK-NEXT: - Type: MEMORY
Rui Ueyama1ce416c2017-12-12 20:00:30 +000044; CHECK-NEXT: Memories:
Sam Cleggc94d3932017-11-17 18:14:09 +000045; CHECK-NEXT: - Initial: 0x00000002
46; CHECK-NEXT: - Type: GLOBAL
Rui Ueyama1ce416c2017-12-12 20:00:30 +000047; CHECK-NEXT: Globals:
Sam Cleggf50534b2018-01-09 21:47:36 +000048; CHECK-NEXT: - Index: 0
49; CHECK-NEXT: Type: I32
Sam Cleggc94d3932017-11-17 18:14:09 +000050; CHECK-NEXT: Mutable: true
Rui Ueyama1ce416c2017-12-12 20:00:30 +000051; CHECK-NEXT: InitExpr:
Sam Cleggc94d3932017-11-17 18:14:09 +000052; CHECK-NEXT: Opcode: I32_CONST
53; CHECK-NEXT: Value: 66560
Sam Clegg51bcdc22018-01-17 01:34:31 +000054; CHECK-NEXT: - Index: 1
55; CHECK-NEXT: Type: I32
56; CHECK-NEXT: Mutable: false
57; CHECK-NEXT: InitExpr:
58; CHECK-NEXT: Opcode: I32_CONST
59; CHECK-NEXT: Value: 66560
Sam Clegg37a4a8a2018-02-07 03:04:53 +000060; CHECK-NEXT: - Index: 2
61; CHECK-NEXT: Type: I32
62; CHECK-NEXT: Mutable: false
63; CHECK-NEXT: InitExpr:
64; CHECK-NEXT: Opcode: I32_CONST
65; CHECK-NEXT: Value: 1024
Sam Cleggc94d3932017-11-17 18:14:09 +000066; CHECK-NEXT: - Type: EXPORT
Rui Ueyama1ce416c2017-12-12 20:00:30 +000067; CHECK-NEXT: Exports:
Sam Cleggc94d3932017-11-17 18:14:09 +000068; CHECK-NEXT: - Name: memory
69; CHECK-NEXT: Kind: MEMORY
70; CHECK-NEXT: Index: 0
Sam Cleggc6e4d732017-12-21 02:30:09 +000071; CHECK-NEXT: - Name: alias_fn
Sam Clegg4b27c052017-12-03 02:38:04 +000072; CHECK-NEXT: Kind: FUNCTION
73; CHECK-NEXT: Index: 0
Sam Clegg0f0a4282018-01-20 01:44:45 +000074; CHECK-NEXT: - Name: _start
75; CHECK-NEXT: Kind: FUNCTION
76; CHECK-NEXT: Index: 1
Sam Cleggc6e4d732017-12-21 02:30:09 +000077; CHECK-NEXT: - Name: direct_fn
Sam Cleggc94d3932017-11-17 18:14:09 +000078; CHECK-NEXT: Kind: FUNCTION
79; CHECK-NEXT: Index: 2
Sam Cleggc6e4d732017-12-21 02:30:09 +000080; CHECK-NEXT: - Name: call_direct
Sam Cleggc94d3932017-11-17 18:14:09 +000081; CHECK-NEXT: Kind: FUNCTION
82; CHECK-NEXT: Index: 3
Sam Cleggc6e4d732017-12-21 02:30:09 +000083; CHECK-NEXT: - Name: call_alias
84; CHECK-NEXT: Kind: FUNCTION
85; CHECK-NEXT: Index: 4
86; CHECK-NEXT: - Name: call_alias_ptr
87; CHECK-NEXT: Kind: FUNCTION
88; CHECK-NEXT: Index: 5
89; CHECK-NEXT: - Name: call_direct_ptr
90; CHECK-NEXT: Kind: FUNCTION
91; CHECK-NEXT: Index: 6
Sam Clegg51bcdc22018-01-17 01:34:31 +000092; CHECK-NEXT: - Name: __heap_base
93; CHECK-NEXT: Kind: GLOBAL
94; CHECK-NEXT: Index: 1
Sam Clegg37a4a8a2018-02-07 03:04:53 +000095; CHECK-NEXT: - Name: __data_end
96; CHECK-NEXT: Kind: GLOBAL
97; CHECK-NEXT: Index: 2
Sam Cleggc6e4d732017-12-21 02:30:09 +000098; CHECK-NEXT: - Type: ELEM
Rui Ueyamab9b1a522018-01-24 00:22:53 +000099; CHECK-NEXT: Segments:
100; CHECK-NEXT: - Offset:
Sam Cleggc6e4d732017-12-21 02:30:09 +0000101; CHECK-NEXT: Opcode: I32_CONST
102; CHECK-NEXT: Value: 1
Sam Clegg5cfffbc2017-12-22 20:35:19 +0000103; CHECK-NEXT: Functions: [ 0, 2 ]
Sam Cleggc94d3932017-11-17 18:14:09 +0000104; CHECK-NEXT: - Type: CODE
Rui Ueyama1ce416c2017-12-12 20:00:30 +0000105; CHECK-NEXT: Functions:
Sam Cleggf50534b2018-01-09 21:47:36 +0000106; CHECK-NEXT: - Index: 0
107; CHECK-NEXT: Locals:
Sam Cleggc94d3932017-11-17 18:14:09 +0000108; CHECK-NEXT: Body: 41010B
Sam Cleggf50534b2018-01-09 21:47:36 +0000109; CHECK-NEXT: - Index: 1
110; CHECK-NEXT: Locals:
Sam Cleggc94d3932017-11-17 18:14:09 +0000111; CHECK-NEXT: Body: 1080808080001A0B
Sam Cleggf50534b2018-01-09 21:47:36 +0000112; CHECK-NEXT: - Index: 2
113; CHECK-NEXT: Locals:
Sam Cleggc94d3932017-11-17 18:14:09 +0000114; CHECK-NEXT: Body: 41000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000115; CHECK-NEXT: - Index: 3
116; CHECK-NEXT: Locals:
Sam Clegg1cf31bb2017-12-21 02:43:39 +0000117; CHECK-NEXT: Body: 1082808080000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000118; CHECK-NEXT: - Index: 4
119; CHECK-NEXT: Locals:
Sam Cleggc6e4d732017-12-21 02:30:09 +0000120; CHECK-NEXT: Body: 1080808080000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000121; CHECK-NEXT: - Index: 5
Rui Ueyamab9b1a522018-01-24 00:22:53 +0000122; CHECK-NEXT: Locals:
Sam Clegg5cfffbc2017-12-22 20:35:19 +0000123; CHECK-NEXT: - Type: I32
124; CHECK-NEXT: Count: 2
125; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081080808080002101200041106A24808080800020010B
Sam Cleggf50534b2018-01-09 21:47:36 +0000126; CHECK-NEXT: - Index: 6
Rui Ueyamab9b1a522018-01-24 00:22:53 +0000127; CHECK-NEXT: Locals:
Sam Cleggc6e4d732017-12-21 02:30:09 +0000128; CHECK-NEXT: - Type: I32
129; CHECK-NEXT: Count: 2
Sam Clegg5cfffbc2017-12-22 20:35:19 +0000130; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081082808080002101200041106A24808080800020010B
Sam Clegg50686852018-01-12 18:35:13 +0000131; CHECK-NEXT: - Index: 7
132; CHECK-NEXT: Locals:
133; CHECK-NEXT: Body: 0B
Sam Cleggc94d3932017-11-17 18:14:09 +0000134; CHECK-NEXT: - Type: CUSTOM
135; CHECK-NEXT: Name: linking
136; CHECK-NEXT: DataSize: 0
137; CHECK-NEXT: - Type: CUSTOM
138; CHECK-NEXT: Name: name
Rui Ueyama1ce416c2017-12-12 20:00:30 +0000139; CHECK-NEXT: FunctionNames:
Sam Cleggc94d3932017-11-17 18:14:09 +0000140; CHECK-NEXT: - Index: 0
Sam Cleggc6e4d732017-12-21 02:30:09 +0000141; CHECK-NEXT: Name: alias_fn
Sam Cleggc94d3932017-11-17 18:14:09 +0000142; CHECK-NEXT: - Index: 1
143; CHECK-NEXT: Name: _start
144; CHECK-NEXT: - Index: 2
Sam Cleggc6e4d732017-12-21 02:30:09 +0000145; CHECK-NEXT: Name: direct_fn
Sam Cleggc94d3932017-11-17 18:14:09 +0000146; CHECK-NEXT: - Index: 3
Sam Cleggc6e4d732017-12-21 02:30:09 +0000147; CHECK-NEXT: Name: call_direct
148; CHECK-NEXT: - Index: 4
149; CHECK-NEXT: Name: call_alias
150; CHECK-NEXT: - Index: 5
151; CHECK-NEXT: Name: call_alias_ptr
152; CHECK-NEXT: - Index: 6
153; CHECK-NEXT: Name: call_direct_ptr
Sam Clegg50686852018-01-12 18:35:13 +0000154; CHECK-NEXT: - Index: 7
155; CHECK-NEXT: Name: __wasm_call_ctors
Sam Cleggc94d3932017-11-17 18:14:09 +0000156; CHECK-NEXT: ...