xref: /llvm-project/llvm/test/MC/WebAssembly/function-alias.ll (revision c3536b263f253a69fb336fb0617ee33a01a5c5dd)
1; RUN: llc -filetype=obj %s -mattr=-reference-types,-call-indirect-overlong -o - | llvm-readobj --symbols - | FileCheck %s
2; RUN: llc -filetype=obj %s -mattr=+reference-types,-call-indirect-overlong -o - | llvm-readobj --symbols - | FileCheck --check-prefix=REF %s
3
4target triple = "wasm32-unknown-unknown-wasm"
5
6@foo = alias i8, ptr @func
7@bar = alias ptr (), ptr @func
8@bar2 = alias ptr (), ptr @bar
9
10define ptr @func() {
11  call ptr @bar2();
12  ret ptr @foo;
13}
14
15; CHECK:      Symbols [
16; CHECK-NEXT:   Symbol {
17; CHECK-NEXT:     Name: func
18; CHECK-NEXT:     Type: FUNCTION (0x0)
19; CHECK-NEXT:     Flags [ (0x0)
20; CHECK-NEXT:     ]
21; CHECK-NEXT:     ElementIndex: 0x0
22; CHECK-NEXT:   }
23; CHECK-NEXT:   Symbol {
24; CHECK-NEXT:     Name: bar2
25; CHECK-NEXT:     Type: FUNCTION (0x0)
26; CHECK-NEXT:     Flags [ (0x0)
27; CHECK-NEXT:     ]
28; CHECK-NEXT:     ElementIndex: 0x0
29; CHECK-NEXT:   }
30; CHECK-NEXT:   Symbol {
31; CHECK-NEXT:     Name: foo
32; CHECK-NEXT:     Type: FUNCTION (0x0)
33; CHECK-NEXT:     Flags [ (0x0)
34; CHECK-NEXT:     ]
35; CHECK-NEXT:     ElementIndex: 0x0
36; CHECK-NEXT:   }
37; CHECK-NEXT:   Symbol {
38; CHECK-NEXT:     Name: bar
39; CHECK-NEXT:     Type: FUNCTION (0x0)
40; CHECK-NEXT:     Flags [ (0x0)
41; CHECK-NEXT:     ]
42; CHECK-NEXT:     ElementIndex: 0x0
43; CHECK-NEXT:   }
44; CHECK-NEXT: ]
45
46; REF:      Symbols [
47; REF-NEXT:   Symbol {
48; REF-NEXT:     Name: func
49; REF-NEXT:     Type: FUNCTION (0x0)
50; REF-NEXT:     Flags [ (0x0)
51; REF-NEXT:     ]
52; REF-NEXT:     ElementIndex: 0x0
53; REF-NEXT:   }
54; REF-NEXT:   Symbol {
55; REF-NEXT:     Name: bar2
56; REF-NEXT:     Type: FUNCTION (0x0)
57; REF-NEXT:     Flags [ (0x0)
58; REF-NEXT:     ]
59; REF-NEXT:     ElementIndex: 0x0
60; REF-NEXT:   }
61; REF-NEXT:   Symbol {
62; REF-NEXT:     Name: foo
63; REF-NEXT:     Type: FUNCTION (0x0)
64; REF-NEXT:     Flags [ (0x0)
65; REF-NEXT:     ]
66; REF-NEXT:     ElementIndex: 0x0
67; REF-NEXT:   }
68; REF-NEXT:   Symbol {
69; REF-NEXT:     Name: bar
70; REF-NEXT:     Type: FUNCTION (0x0)
71; REF-NEXT:     Flags [ (0x0)
72; REF-NEXT:     ]
73; REF-NEXT:     ElementIndex: 0x0
74; REF-NEXT:   }
75; REF-NEXT:   Symbol {
76; REF-NEXT:     Name: __indirect_function_table
77; REF-NEXT:     Type: TABLE (0x5)
78; REF-NEXT:     Flags [ (0x90)
79; REF-NEXT:       NO_STRIP (0x80)
80; REF-NEXT:       UNDEFINED (0x10)
81; REF-NEXT:     ]
82; REF-NEXT:     ImportModule: env
83; REF-NEXT:     ElementIndex: 0x0
84; REF-NEXT:   }
85; REF-NEXT: ]
86