72 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu -stack-size-section | FileCheck %s2 3; CHECK-LABEL: func1:4; CHECK-NEXT: .Lfunc_begin0:5; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}6; CHECK-NEXT: .quad .Lfunc_begin07; CHECK-NEXT: .byte 08define void @func1(i32, i32) #0 {9 ret void10}11 12; CHECK-LABEL: func2:13; CHECK-NEXT: .Lfunc_begin1:14; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}15; CHECK-NEXT: .quad .Lfunc_begin116; CHECK-NEXT: .ascii "\250\001"17define void @func2(i32, i32) #0 {18 alloca i32, align 419 alloca i32, align 420 ret void21}22 23; CHECK-LABEL: func3:24; CHECK-NEXT: .Lfunc_begin2:25; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}26; CHECK-NEXT: .quad .Lfunc_begin227; CHECK-NEXT: .ascii "\250\001"28define void @func3() #0 {29 alloca i32, align 430 call void @func1(i32 1, i32 2)31 ret void32}33 34; CHECK-LABEL: dynalloc:35; CHECK-NOT: .section .stack_sizes36define void @dynalloc(i32 %N) #0 {37 alloca i32, i32 %N38 ret void39}40 41; Check that .stack_sizes section is linked to the function's section (.text),42; and not to the section containing the jump table (.rodata).43; CHECK-LABEL: .section .stack_sizes,"o",@progbits,.text{{$}}44; CHECK-NEXT: .quad .Lfunc_begin445; CHECK-NEXT: .ascii "\260!"46define i32 @linked_section(i32 %x) {47 %arr = alloca [1024 x i32]48 switch i32 %x, label %sw.epilog [49 i32 0, label %sw.bb050 i32 1, label %sw.bb151 i32 2, label %sw.bb252 i32 3, label %sw.bb353 ]54 55sw.bb0:56 ret i32 057 58sw.bb1:59 ret i32 160 61sw.bb2:62 ret i32 263 64sw.bb3:65 ret i32 366 67sw.epilog:68 ret i32 -169}70 71attributes #0 = { "frame-pointer"="all" }72