| 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 | 279c850 | 2018-02-02 00:30:03 +0000 | [diff] [blame] | 3 | ; RUN: lld -flavor wasm --check-signatures %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 | 70683b2 | 2018-01-24 03:29:47 +0000 | [diff] [blame] | 9 | target triple = "wasm32-unknown-unknown-wasm" |
| 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 |
| 29 | ; CHECK-NEXT: ReturnType: I32 |
| Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 30 | ; CHECK-NEXT: ParamTypes: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 31 | ; CHECK-NEXT: - Index: 1 |
| 32 | ; CHECK-NEXT: ReturnType: NORESULT |
| Rui Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 33 | ; CHECK-NEXT: ParamTypes: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 34 | ; CHECK-NEXT: - Type: FUNCTION |
| Sam Clegg | 5068685 | 2018-01-12 18:35:13 +0000 | [diff] [blame] | 35 | ; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0, 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: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 38 | ; CHECK-NEXT: - ElemType: ANYFUNC |
| 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 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 71 | ; CHECK-NEXT: - Name: alias_fn |
| Sam Clegg | 4b27c05 | 2017-12-03 02:38:04 +0000 | [diff] [blame] | 72 | ; CHECK-NEXT: Kind: FUNCTION |
| 73 | ; CHECK-NEXT: Index: 0 |
| Sam Clegg | 0f0a428 | 2018-01-20 01:44:45 +0000 | [diff] [blame] | 74 | ; CHECK-NEXT: - Name: _start |
| 75 | ; CHECK-NEXT: Kind: FUNCTION |
| 76 | ; CHECK-NEXT: Index: 1 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 77 | ; CHECK-NEXT: - Name: direct_fn |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 78 | ; CHECK-NEXT: Kind: FUNCTION |
| 79 | ; CHECK-NEXT: Index: 2 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 80 | ; CHECK-NEXT: - Name: call_direct |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 81 | ; CHECK-NEXT: Kind: FUNCTION |
| 82 | ; CHECK-NEXT: Index: 3 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 83 | ; 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 Clegg | 51bcdc2 | 2018-01-17 01:34:31 +0000 | [diff] [blame] | 92 | ; CHECK-NEXT: - Name: __heap_base |
| 93 | ; CHECK-NEXT: Kind: GLOBAL |
| 94 | ; CHECK-NEXT: Index: 1 |
| Sam Clegg | 37a4a8a | 2018-02-07 03:04:53 +0000 | [diff] [blame^] | 95 | ; CHECK-NEXT: - Name: __data_end |
| 96 | ; CHECK-NEXT: Kind: GLOBAL |
| 97 | ; CHECK-NEXT: Index: 2 |
| 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 |
| Sam Clegg | 5cfffbc | 2017-12-22 20:35:19 +0000 | [diff] [blame] | 103 | ; CHECK-NEXT: Functions: [ 0, 2 ] |
| 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: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 108 | ; CHECK-NEXT: Body: 41010B |
| Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 109 | ; CHECK-NEXT: - Index: 1 |
| 110 | ; CHECK-NEXT: Locals: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 111 | ; CHECK-NEXT: Body: 1080808080001A0B |
| Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 112 | ; CHECK-NEXT: - Index: 2 |
| 113 | ; CHECK-NEXT: Locals: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 114 | ; CHECK-NEXT: Body: 41000B |
| Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 115 | ; CHECK-NEXT: - Index: 3 |
| 116 | ; CHECK-NEXT: Locals: |
| Sam Clegg | 1cf31bb | 2017-12-21 02:43:39 +0000 | [diff] [blame] | 117 | ; CHECK-NEXT: Body: 1082808080000B |
| Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 118 | ; CHECK-NEXT: - Index: 4 |
| 119 | ; CHECK-NEXT: Locals: |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 120 | ; CHECK-NEXT: Body: 1080808080000B |
| 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: |
| Sam Clegg | 5cfffbc | 2017-12-22 20:35:19 +0000 | [diff] [blame] | 123 | ; CHECK-NEXT: - Type: I32 |
| 124 | ; CHECK-NEXT: Count: 2 |
| 125 | ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081080808080002101200041106A24808080800020010B |
| Sam Clegg | f50534b | 2018-01-09 21:47:36 +0000 | [diff] [blame] | 126 | ; CHECK-NEXT: - Index: 6 |
| Rui Ueyama | b9b1a52 | 2018-01-24 00:22:53 +0000 | [diff] [blame] | 127 | ; CHECK-NEXT: Locals: |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 128 | ; CHECK-NEXT: - Type: I32 |
| 129 | ; CHECK-NEXT: Count: 2 |
| Sam Clegg | 5cfffbc | 2017-12-22 20:35:19 +0000 | [diff] [blame] | 130 | ; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081082808080002101200041106A24808080800020010B |
| Sam Clegg | 5068685 | 2018-01-12 18:35:13 +0000 | [diff] [blame] | 131 | ; CHECK-NEXT: - Index: 7 |
| 132 | ; CHECK-NEXT: Locals: |
| 133 | ; CHECK-NEXT: Body: 0B |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 134 | ; 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 Ueyama | 1ce416c | 2017-12-12 20:00:30 +0000 | [diff] [blame] | 139 | ; CHECK-NEXT: FunctionNames: |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 140 | ; CHECK-NEXT: - Index: 0 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 141 | ; CHECK-NEXT: Name: alias_fn |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 142 | ; CHECK-NEXT: - Index: 1 |
| 143 | ; CHECK-NEXT: Name: _start |
| 144 | ; CHECK-NEXT: - Index: 2 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 145 | ; CHECK-NEXT: Name: direct_fn |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 146 | ; CHECK-NEXT: - Index: 3 |
| Sam Clegg | c6e4d73 | 2017-12-21 02:30:09 +0000 | [diff] [blame] | 147 | ; 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 Clegg | 5068685 | 2018-01-12 18:35:13 +0000 | [diff] [blame] | 154 | ; CHECK-NEXT: - Index: 7 |
| 155 | ; CHECK-NEXT: Name: __wasm_call_ctors |
| Sam Clegg | c94d393 | 2017-11-17 18:14:09 +0000 | [diff] [blame] | 156 | ; CHECK-NEXT: ... |