xref: /llvm-project/llvm/test/MC/WebAssembly/no-dead-strip.ll (revision fb6e024f49ddbf1a018eccab7ccfa7c1f41964d0)
1; RUN: llc < %s --mtriple=wasm32-unknown-unknown -filetype=obj -wasm-keep-registers -o - | obj2yaml - | FileCheck %s
2
3@llvm.used = appending global [5 x ptr] [
4  ptr @foo, ptr @gv0, ptr @gv1, ptr @gv2, ptr @gv3
5], section "llvm.metadata"
6
7define i32 @foo() {
8entry:
9    ret i32 0
10}
11
12; externally visible GV has NO_STRIP/RETAIN in both symtab entry and segment info
13@gv0 = global i32 42
14; internal GV has NO_STRIP/RETAIN in both symtab entry and segment info
15@gv1 = internal global i32 41
16; private GV has RETAIN in segment info only (no symtab entry)
17@gv2 = private global i32 40
18; explicit section names
19@gv3 = global i32 39, section "ddd.hello"
20@gv4.not.used = global i64 38, section "ddd.hello"
21
22; CHECK:         SymbolTable:
23; CHECK-NEXT:      - Index:           0
24; CHECK-NEXT:        Kind:            FUNCTION
25; CHECK-NEXT:        Name:            foo
26; CHECK-NEXT:        Flags:           [ NO_STRIP ]
27; CHECK-NEXT:        Function:        0
28; CHECK-NEXT:      - Index:           1
29; CHECK-NEXT:        Kind:            DATA
30; CHECK-NEXT:        Name:            gv0
31; CHECK-NEXT:        Flags:           [ NO_STRIP ]
32; CHECK-NEXT:        Segment:         0
33; CHECK-NEXT:        Size:            4
34; CHECK-NEXT:      - Index:           2
35; CHECK-NEXT:        Kind:            DATA
36; CHECK-NEXT:        Name:            gv1
37; CHECK-NEXT:        Flags:           [ BINDING_LOCAL, NO_STRIP ]
38; CHECK-NEXT:        Segment:         1
39; CHECK-NEXT:        Size:            4
40; CHECK-NEXT:      - Index:           3
41; CHECK-NEXT:        Kind:            DATA
42; CHECK-NEXT:        Name:            gv3
43; CHECK-NEXT:        Flags:           [ NO_STRIP ]
44; CHECK-NEXT:        Segment:         3
45; CHECK-NEXT:        Size:            4
46; CHECK-NEXT:      - Index:           4
47; CHECK-NEXT:        Kind:            DATA
48; CHECK-NEXT:        Name:            gv4.not.used
49; CHECK-NEXT:        Flags:           [  ]
50; CHECK-NEXT:        Segment:         3
51; CHECK-NEXT:        Offset:          8
52; CHECK-NEXT:        Size:            8
53; CHECK-NEXT:      - Index:           5
54; CHECK-NEXT:        Kind:            TABLE
55; CHECK-NEXT:        Name:            __indirect_function_table
56; CHECK-NEXT:        Flags:           [ UNDEFINED, NO_STRIP ]
57; CHECK-NEXT:        Table:           0
58; CHECK-NEXT:    SegmentInfo:
59; CHECK-NEXT:      - Index:           0
60; CHECK-NEXT:        Name:            .data.gv0
61; CHECK-NEXT:        Alignment:       2
62; CHECK-NEXT:        Flags:           [ RETAIN ]
63; CHECK-NEXT:      - Index:           1
64; CHECK-NEXT:        Name:            .data.gv1
65; CHECK-NEXT:        Alignment:       2
66; CHECK-NEXT:        Flags:           [ RETAIN ]
67; CHECK-NEXT:      - Index:           2
68; CHECK-NEXT:        Name:            .data..Lgv2
69; CHECK-NEXT:        Alignment:       2
70; CHECK-NEXT:        Flags:           [ RETAIN ]
71; CHECK-NEXT:      - Index:           3
72; CHECK-NEXT:        Name:            ddd.hello
73; CHECK-NEXT:        Alignment:       3
74; CHECK-NEXT:        Flags:           [ RETAIN ]
75