]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/wasm/weak-alias-overide.ll
Vendor import of lld trunk r321414:
[FreeBSD/FreeBSD.git] / test / wasm / weak-alias-overide.ll
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
5
6 ; Test that the strongly defined alias_fn from this file is used both here
7 ; and in call_alias.
8
9 define i32 @alias_fn() local_unnamed_addr #1 {
10   ret i32 1
11 }
12
13 ; Function Attrs: nounwind uwtable
14 define void @_start() local_unnamed_addr #1 {
15 entry:
16   %call = tail call i32 @alias_fn() #2
17   ret void
18 }
19
20 ; CHECK:      --- !WASM
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
35 ; CHECK-NEXT:     Tables:
36 ; CHECK-NEXT:       - ElemType:        ANYFUNC
37 ; CHECK-NEXT:         Limits:
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
123 ; CHECK-NEXT: ...