brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 69d7ed2 Raw
175 lines · plain
1; RUN: llc -mcpu=mvp -filetype=obj %s -o %t.o2; RUN: yaml2obj %S/Inputs/globals.yaml -o %t_globals.o3; RUN: wasm-ld -print-gc-sections -o %t1.wasm %t.o %t_globals.o | \4; RUN:     FileCheck %s -check-prefix=PRINT-GC5; PRINT-GC: removing unused section {{.*}}:(unused_function)6; PRINT-GC-NOT: removing unused section {{.*}}:(used_function)7; PRINT-GC: removing unused section {{.*}}:(.data.unused_data)8; PRINT-GC-NOT: removing unused section {{.*}}:(.data.used_data)9; PRINT-GC: removing unused section {{.*}}:(unused_global)10; PRINT-GC-NOT: removing unused section {{.*}}:(used_global)11 12target triple = "wasm32-unknown-unknown"13 14@unused_data = hidden global i64 1, align 415@used_data = hidden global i32 2, align 416 17define hidden i64 @unused_function(i64 %arg) {18  %1 = load i64, ptr @unused_data, align 419  ret i64 %120}21 22define hidden i32 @used_function() {23  %1 = load i32, ptr @used_data, align 424  ret i32 %125}26 27declare i64 @use_global()28 29define hidden void @_start() {30entry:31  call i32 @used_function()32  call i64 @use_global()33  ret void34}35 36; RUN: obj2yaml %t1.wasm | FileCheck %s37 38; CHECK:        - Type:            TYPE39; CHECK-NEXT:     Signatures:40; CHECK-NEXT:       - Index:           041; CHECK-NEXT:         ParamTypes:      []42; CHECK-NEXT:         ReturnTypes:43; CHECK-NEXT:           - I3244; CHECK-NEXT:       - Index:           145; CHECK-NEXT:         ParamTypes:      []46; CHECK-NEXT:         ReturnTypes:     []47; CHECK-NEXT:       - Index:           248; CHECK-NEXT:         ParamTypes:      []49; CHECK-NEXT:         ReturnTypes:50; CHECK-NEXT:           - I6451; CHECK-NEXT:   - Type:            FUNCTION52 53; CHECK:        - Type:            GLOBAL54; CHECK-NEXT:     Globals:55; CHECK-NEXT:       - Index:           056; CHECK-NEXT:         Type:            I3257; CHECK-NEXT:         Mutable:         true58; CHECK-NEXT:         InitExpr:59; CHECK-NEXT:           Opcode:          I32_CONST60; CHECK-NEXT:           Value:           6553661; CHECK-NEXT:       - Index:       162; CHECK-NEXT:         Type:        I6463; CHECK-NEXT:         Mutable:     true64; CHECK-NEXT:         InitExpr:65; CHECK-NEXT:           Opcode:          I64_CONST66; CHECK-NEXT:           Value:           45667 68; CHECK:        - Type:            DATA69; CHECK-NEXT:     Segments:70; CHECK-NEXT:       - SectionOffset:   871; CHECK-NEXT:         InitFlags:       072; CHECK-NEXT:         Offset:73; CHECK-NEXT:           Opcode:          I32_CONST74; CHECK-NEXT:           Value:           6553675; CHECK-NEXT:         Content:         '02000000'76; CHECK-NEXT:   - Type:            CUSTOM77; CHECK-NEXT:     Name:            name78; CHECK-NEXT:     FunctionNames:79; CHECK-NEXT:       - Index:           080; CHECK-NEXT:         Name:            used_function81; CHECK-NEXT:       - Index:           182; CHECK-NEXT:         Name:            _start83; CHECK-NEXT:       - Index:           284; CHECK-NEXT:         Name:            use_global85; CHECK-NEXT:     GlobalNames:86; CHECK-NEXT:       - Index:           087; CHECK-NEXT:         Name:            __stack_pointer88; CHECK-NEXT:       - Index:           189; CHECK-NEXT:         Name:            used_global90; CHECK-NEXT:     DataSegmentNames:91; CHECK-NEXT:       - Index:           092; CHECK-NEXT:         Name:            .data93; CHECK-NEXT: ...94 95; RUN: wasm-ld -print-gc-sections --no-gc-sections -o %t1.no-gc.wasm \96; RUN:     %t.o %t_globals.o97; RUN: obj2yaml %t1.no-gc.wasm | FileCheck %s -check-prefix=NO-GC98 99; NO-GC:        - Type:            TYPE100; NO-GC-NEXT:     Signatures:101; NO-GC-NEXT:       - Index:           0102; NO-GC-NEXT:         ParamTypes:      []103; NO-GC-NEXT:         ReturnTypes:     []104; NO-GC-NEXT:       - Index:           1105; NO-GC-NEXT:         ParamTypes:106; NO-GC-NEXT:           - I64107; NO-GC-NEXT:         ReturnTypes:108; NO-GC-NEXT:           - I64109; NO-GC-NEXT:       - Index:           2110; NO-GC-NEXT:         ParamTypes:      []111; NO-GC-NEXT:         ReturnTypes:112; NO-GC-NEXT:           - I32113; NO-GC-NEXT:       - Index:           3114; NO-GC-NEXT:         ParamTypes:      []115; NO-GC-NEXT:         ReturnTypes:116; NO-GC-NEXT:           - I64117; NO-GC-NEXT:   - Type:            FUNCTION118 119; NO-GC:        - Type:            GLOBAL120; NO-GC-NEXT:     Globals:121; NO-GC-NEXT:       - Index:           0122; NO-GC-NEXT:         Type:            I32123; NO-GC-NEXT:         Mutable:         true124; NO-GC-NEXT:         InitExpr:125; NO-GC-NEXT:           Opcode:          I32_CONST126; NO-GC-NEXT:           Value:           65536127; NO-GC-NEXT:       - Index:       1128; NO-GC-NEXT:         Type:        I64129; NO-GC-NEXT:         Mutable:     true130; NO-GC-NEXT:         InitExpr:131; NO-GC-NEXT:           Opcode:          I64_CONST132; NO-GC-NEXT:           Value:           123133; NO-GC-NEXT:       - Index:       2134; NO-GC-NEXT:         Type:        I64135; NO-GC-NEXT:         Mutable:     true136; NO-GC-NEXT:         InitExpr:137; NO-GC-NEXT:           Opcode:          I64_CONST138; NO-GC-NEXT:           Value:           456139 140; NO-GC:        - Type:            DATA141; NO-GC-NEXT:     Segments:142; NO-GC-NEXT:       - SectionOffset:   8143; NO-GC-NEXT:         InitFlags:       0144; NO-GC-NEXT:         Offset:145; NO-GC-NEXT:           Opcode:          I32_CONST146; NO-GC-NEXT:           Value:           65536147; NO-GC-NEXT:         Content:         '010000000000000002000000'148; NO-GC-NEXT:   - Type:            CUSTOM149; NO-GC-NEXT:     Name:            name150; NO-GC-NEXT:     FunctionNames:151; NO-GC-NEXT:       - Index:           0152; NO-GC-NEXT:         Name:            __wasm_call_ctors153; NO-GC-NEXT:       - Index:           1154; NO-GC-NEXT:         Name:            unused_function155; NO-GC-NEXT:       - Index:           2156; NO-GC-NEXT:         Name:            used_function157; NO-GC-NEXT:       - Index:           3158; NO-GC-NEXT:         Name:            _start159; NO-GC-NEXT:       - Index:           4160; NO-GC-NEXT:         Name:            use_global161; NO-GC-NEXT:     GlobalNames:162; NO-GC-NEXT:       - Index:           0163; NO-GC-NEXT:         Name:            __stack_pointer164; NO-GC-NEXT:       - Index:           1165; NO-GC-NEXT:         Name:            unused_global166; NO-GC-NEXT:       - Index:           2167; NO-GC-NEXT:         Name:            used_global168; NO-GC-NEXT:     DataSegmentNames:169; NO-GC-NEXT:       - Index:           0170; NO-GC-NEXT:         Name:            .data171; NO-GC-NEXT: ...172 173; RUN: not wasm-ld --gc-sections --relocatable -o %t1.no-gc.wasm %t.o 2>&1 | FileCheck %s -check-prefix=CHECK-ERROR174; CHECK-ERROR: error: -r and --gc-sections may not be used together175