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