Sam Clegg | 70683b2 | 2018-01-24 03:29:47 +0000 | [diff] [blame] | 1 | ; RUN: llc -filetype=obj -o %t.o %s |
| 2 | ; RUN: llc -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o |
Sam Clegg | 305b034 | 2018-09-27 21:06:25 +0000 | [diff] [blame] | 3 | ; RUN: wasm-ld --export-dynamic %t.o %t2.o -o %t.wasm |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 4 | ; RUN: obj2yaml %t.wasm | FileCheck %s |
| 5 | |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 6 | ; Test that the strongly defined alias_fn from this file is used both here |
| 7 | ; and in call_alias. |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 8 | |
Sam Clegg | 262e090 | 2018-05-10 17:59:41 +0000 | [diff] [blame] | 9 | target triple = "wasm32-unknown-unknown" |
Sam Clegg | 70683b2 | 2018-01-24 03:29:47 +0000 | [diff] [blame] | 10 | |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 11 | define i32 @alias_fn() local_unnamed_addr #1 { |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 12 | ret i32 1 |
| 13 | } |
| 14 | |
| 15 | ; Function Attrs: nounwind uwtable |
| 16 | define void @_start() local_unnamed_addr #1 { |
| 17 | entry: |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 18 | %call = tail call i32 @alias_fn() #2 |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 19 | ret void |
| 20 | } |
| 21 | |
| 22 | ; CHECK: --- !WASM |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 23 | ; CHECK-NEXT: FileHeader: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 24 | ; CHECK-NEXT: Version: 0x00000001 |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 25 | ; CHECK-NEXT: Sections: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 26 | ; CHECK-NEXT: - Type: TYPE |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 27 | ; CHECK-NEXT: Signatures: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 28 | ; CHECK-NEXT: - Index: 0 |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 29 | ; CHECK-NEXT: ReturnType: NORESULT |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 30 | ; CHECK-NEXT: ParamTypes: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 31 | ; CHECK-NEXT: - Index: 1 |
| 32 | ; CHECK-NEXT: ReturnType: I32 |
| 33 | ; CHECK-NEXT: ParamTypes: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 34 | ; CHECK-NEXT: - Type: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 35 | ; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1, 1, 1, 1, 1 ] |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 36 | ; CHECK-NEXT: - Type: TABLE |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 37 | ; CHECK-NEXT: Tables: |
Thomas Lively | 25ff893 | 2019-01-08 06:25:55 +0000 | [diff] [blame] | 38 | ; CHECK-NEXT: - ElemType: FUNCREF |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 39 | ; CHECK-NEXT: Limits: |
Sam Clegg | 30b013b | 2017-12-14 00:34:25 +0000 | [diff] [blame] | 40 | ; CHECK-NEXT: Flags: [ HAS_MAX ] |
Sam Clegg | 5cfffbc | 2017-12-22 20:35:19 +0000 | [diff] [blame] | 41 | ; CHECK-NEXT: Initial: 0x00000003 |
| 42 | ; CHECK-NEXT: Maximum: 0x00000003 |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 43 | ; CHECK-NEXT: - Type: MEMORY |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 44 | ; CHECK-NEXT: Memories: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 45 | ; CHECK-NEXT: - Initial: 0x00000002 |
| 46 | ; CHECK-NEXT: - Type: GLOBAL |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 47 | ; CHECK-NEXT: Globals: |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 48 | ; CHECK-NEXT: - Index: 0 |
| 49 | ; CHECK-NEXT: Type: I32 |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 50 | ; CHECK-NEXT: Mutable: true |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 51 | ; CHECK-NEXT: InitExpr: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 52 | ; CHECK-NEXT: Opcode: I32_CONST |
| 53 | ; CHECK-NEXT: Value: 66560 |
Sam Clegg | 51bcdc2 | 2018-01-17 01:34:31 +0000 | [diff] [blame] | 54 | ; 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 Clegg | 37a4a8a | 2018-02-07 03:04:53 +0000 | [diff] [blame] | 60 | ; 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 Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 66 | ; CHECK-NEXT: - Type: EXPORT |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 67 | ; CHECK-NEXT: Exports: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 68 | ; CHECK-NEXT: - Name: memory |
| 69 | ; CHECK-NEXT: Kind: MEMORY |
| 70 | ; CHECK-NEXT: Index: 0 |
Nicholas Wilson | 4cdf5b8 | 2018-03-01 09:38:02 +0000 | [diff] [blame] | 71 | ; 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 Wilson | 4cdf5b8 | 2018-03-01 09:38:02 +0000 | [diff] [blame] | 77 | ; CHECK-NEXT: - Name: alias_fn |
| 78 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 79 | ; CHECK-NEXT: Index: 1 |
Sam Clegg | 47e2b6b | 2018-08-04 00:04:06 +0000 | [diff] [blame] | 80 | ; CHECK-NEXT: - Name: _start |
| 81 | ; CHECK-NEXT: Kind: FUNCTION |
| 82 | ; CHECK-NEXT: Index: 2 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 83 | ; CHECK-NEXT: - Name: direct_fn |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 84 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 85 | ; CHECK-NEXT: Index: 3 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 86 | ; CHECK-NEXT: - Name: call_direct |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 87 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 88 | ; CHECK-NEXT: Index: 4 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 89 | ; CHECK-NEXT: - Name: call_alias |
| 90 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 91 | ; CHECK-NEXT: Index: 5 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 92 | ; CHECK-NEXT: - Name: call_alias_ptr |
| 93 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 94 | ; CHECK-NEXT: Index: 6 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 95 | ; CHECK-NEXT: - Name: call_direct_ptr |
| 96 | ; CHECK-NEXT: Kind: FUNCTION |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 97 | ; CHECK-NEXT: Index: 7 |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 98 | ; CHECK-NEXT: - Type: ELEM |
Rui Ueyama | b9b1a52 | 2018-01-24 00:22:53 +0000 | [diff] [blame] | 99 | ; CHECK-NEXT: Segments: |
| 100 | ; CHECK-NEXT: - Offset: |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 101 | ; CHECK-NEXT: Opcode: I32_CONST |
| 102 | ; CHECK-NEXT: Value: 1 |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 103 | ; CHECK-NEXT: Functions: [ 1, 3 ] |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 104 | ; CHECK-NEXT: - Type: CODE |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 105 | ; CHECK-NEXT: Functions: |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 106 | ; CHECK-NEXT: - Index: 0 |
| 107 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 108 | ; CHECK-NEXT: Body: 0B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 109 | ; CHECK-NEXT: - Index: 1 |
| 110 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 111 | ; CHECK-NEXT: Body: 41010B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 112 | ; CHECK-NEXT: - Index: 2 |
| 113 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 114 | ; CHECK-NEXT: Body: 1081808080001A0B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 115 | ; CHECK-NEXT: - Index: 3 |
| 116 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 117 | ; CHECK-NEXT: Body: 41000B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 118 | ; CHECK-NEXT: - Index: 4 |
| 119 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 120 | ; CHECK-NEXT: Body: 1083808080000B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 121 | ; CHECK-NEXT: - Index: 5 |
Rui Ueyama | b9b1a52 | 2018-01-24 00:22:53 +0000 | [diff] [blame] | 122 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 123 | ; CHECK-NEXT: Body: 1081808080000B |
Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 124 | ; CHECK-NEXT: - Index: 6 |
Rui Ueyama | b9b1a52 | 2018-01-24 00:22:53 +0000 | [diff] [blame] | 125 | ; CHECK-NEXT: Locals: |
Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 126 | ; CHECK-NEXT: - Type: I32 |
| 127 | ; CHECK-NEXT: Count: 2 |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 128 | ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B |
Sam Clegg | 5068685 | 2018-01-12 18:35:13 +0000 | [diff] [blame] | 129 | ; CHECK-NEXT: - Index: 7 |
| 130 | ; CHECK-NEXT: Locals: |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 131 | ; CHECK-NEXT: - Type: I32 |
| 132 | ; CHECK-NEXT: Count: 2 |
| 133 | ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081083808080002101200041106A24808080800020010B |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 134 | ; CHECK-NEXT: - Type: CUSTOM |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 135 | ; CHECK-NEXT: Name: name |
Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 136 | ; CHECK-NEXT: FunctionNames: |
Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 137 | ; CHECK-NEXT: - Index: 0 |
Sam Clegg | 5068685 | 2018-01-12 18:35:13 +0000 | [diff] [blame] | 138 | ; CHECK-NEXT: Name: __wasm_call_ctors |
Nicholas Wilson | 5639da8 | 2018-03-12 15:44:07 +0000 | [diff] [blame] | 139 | ; 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 Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 153 | ; CHECK-NEXT: ... |