blob: 7fefad0fb04a0efbe6505f15a5c2dbf9fb6b5100 [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 Clegg305b0342018-09-27 21:06:25 +00003; RUN: wasm-ld --export-dynamic %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 Clegg262e0902018-05-10 17:59:41 +00009target triple = "wasm32-unknown-unknown"
Sam Clegg70683b22018-01-24 03:29:47 +000010
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
Sam Cleggc94d3932017-11-17 18:14:09 +000029; CHECK-NEXT: ReturnType: NORESULT
Rui Ueyama1ce416c2017-12-12 20:00:30 +000030; CHECK-NEXT: ParamTypes:
Nicholas Wilson5639da82018-03-12 15:44:07 +000031; CHECK-NEXT: - Index: 1
32; CHECK-NEXT: ReturnType: I32
33; CHECK-NEXT: ParamTypes:
Sam Cleggc94d3932017-11-17 18:14:09 +000034; CHECK-NEXT: - Type: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000035; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1, 1, 1, 1, 1 ]
Sam Cleggc94d3932017-11-17 18:14:09 +000036; CHECK-NEXT: - Type: TABLE
Rui Ueyama1ce416c2017-12-12 20:00:30 +000037; CHECK-NEXT: Tables:
Thomas Lively25ff8932019-01-08 06:25:55 +000038; CHECK-NEXT: - ElemType: FUNCREF
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
Nicholas Wilson4cdf5b82018-03-01 09:38:02 +000071; CHECK-NEXT: - Name: __heap_base
72; CHECK-NEXT: Kind: GLOBAL
73; CHECK-NEXT: Index: 1
74; CHECK-NEXT: - Name: __data_end
75; CHECK-NEXT: Kind: GLOBAL
76; CHECK-NEXT: Index: 2
Nicholas Wilson4cdf5b82018-03-01 09:38:02 +000077; CHECK-NEXT: - Name: alias_fn
78; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000079; CHECK-NEXT: Index: 1
Sam Clegg47e2b6b2018-08-04 00:04:06 +000080; CHECK-NEXT: - Name: _start
81; CHECK-NEXT: Kind: FUNCTION
82; CHECK-NEXT: Index: 2
Sam Cleggc6e4d732017-12-21 02:30:09 +000083; CHECK-NEXT: - Name: direct_fn
Sam Cleggc94d3932017-11-17 18:14:09 +000084; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000085; CHECK-NEXT: Index: 3
Sam Cleggc6e4d732017-12-21 02:30:09 +000086; CHECK-NEXT: - Name: call_direct
Sam Cleggc94d3932017-11-17 18:14:09 +000087; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000088; CHECK-NEXT: Index: 4
Sam Cleggc6e4d732017-12-21 02:30:09 +000089; CHECK-NEXT: - Name: call_alias
90; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000091; CHECK-NEXT: Index: 5
Sam Cleggc6e4d732017-12-21 02:30:09 +000092; CHECK-NEXT: - Name: call_alias_ptr
93; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000094; CHECK-NEXT: Index: 6
Sam Cleggc6e4d732017-12-21 02:30:09 +000095; CHECK-NEXT: - Name: call_direct_ptr
96; CHECK-NEXT: Kind: FUNCTION
Nicholas Wilson5639da82018-03-12 15:44:07 +000097; CHECK-NEXT: Index: 7
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
Nicholas Wilson5639da82018-03-12 15:44:07 +0000103; CHECK-NEXT: Functions: [ 1, 3 ]
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:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000108; CHECK-NEXT: Body: 0B
Sam Cleggf50534b2018-01-09 21:47:36 +0000109; CHECK-NEXT: - Index: 1
110; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000111; CHECK-NEXT: Body: 41010B
Sam Cleggf50534b2018-01-09 21:47:36 +0000112; CHECK-NEXT: - Index: 2
113; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000114; CHECK-NEXT: Body: 1081808080001A0B
Sam Cleggf50534b2018-01-09 21:47:36 +0000115; CHECK-NEXT: - Index: 3
116; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000117; CHECK-NEXT: Body: 41000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000118; CHECK-NEXT: - Index: 4
119; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000120; CHECK-NEXT: Body: 1083808080000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000121; CHECK-NEXT: - Index: 5
Rui Ueyamab9b1a522018-01-24 00:22:53 +0000122; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000123; CHECK-NEXT: Body: 1081808080000B
Sam Cleggf50534b2018-01-09 21:47:36 +0000124; CHECK-NEXT: - Index: 6
Rui Ueyamab9b1a522018-01-24 00:22:53 +0000125; CHECK-NEXT: Locals:
Sam Cleggc6e4d732017-12-21 02:30:09 +0000126; CHECK-NEXT: - Type: I32
127; CHECK-NEXT: Count: 2
Nicholas Wilson5639da82018-03-12 15:44:07 +0000128; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B
Sam Clegg50686852018-01-12 18:35:13 +0000129; CHECK-NEXT: - Index: 7
130; CHECK-NEXT: Locals:
Nicholas Wilson5639da82018-03-12 15:44:07 +0000131; CHECK-NEXT: - Type: I32
132; CHECK-NEXT: Count: 2
133; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081083808080002101200041106A24808080800020010B
Sam Cleggc94d3932017-11-17 18:14:09 +0000134; CHECK-NEXT: - Type: CUSTOM
Sam Cleggc94d3932017-11-17 18:14:09 +0000135; CHECK-NEXT: Name: name
Rui Ueyama1ce416c2017-12-12 20:00:30 +0000136; CHECK-NEXT: FunctionNames:
Sam Cleggc94d3932017-11-17 18:14:09 +0000137; CHECK-NEXT: - Index: 0
Sam Clegg50686852018-01-12 18:35:13 +0000138; CHECK-NEXT: Name: __wasm_call_ctors
Nicholas Wilson5639da82018-03-12 15:44:07 +0000139; CHECK-NEXT: - Index: 1
140; CHECK-NEXT: Name: alias_fn
141; CHECK-NEXT: - Index: 2
142; CHECK-NEXT: Name: _start
143; CHECK-NEXT: - Index: 3
144; CHECK-NEXT: Name: direct_fn
145; CHECK-NEXT: - Index: 4
146; CHECK-NEXT: Name: call_direct
147; CHECK-NEXT: - Index: 5
148; CHECK-NEXT: Name: call_alias
149; CHECK-NEXT: - Index: 6
150; CHECK-NEXT: Name: call_alias_ptr
151; CHECK-NEXT: - Index: 7
152; CHECK-NEXT: Name: call_direct_ptr
Sam Cleggc94d3932017-11-17 18:14:09 +0000153; CHECK-NEXT: ...