| ; RUN: llc -mtriple=aarch64 -aarch64-min-jump-table-entries=4 -stack-size-section %s -o - | FileCheck %s | |
| ; CHECK-LABEL: .section .stack_sizes,"o",@progbits,.text{{$}} | |
| ; CHECK-NEXT: .xword .Lfunc_begin0 | |
| ; CHECK-NEXT: .byte 0 | |
| define void @empty() { | |
| ret void | |
| } | |
| ; CHECK-LABEL: .section .stack_sizes,"o",@progbits,.text{{$}} | |
| ; CHECK-NEXT: .xword .Lfunc_begin1 | |
| ; CHECK-NEXT: .ascii "\200\001" | |
| define void @non_empty() #0 { | |
| alloca [32 x i32] | |
| ret void | |
| } | |
| ; CHECK-LABEL: dynalloc: | |
| ; CHECK-NOT: .section .stack_sizes | |
| define void @dynalloc(i32 %n) #0 { | |
| alloca i32, i32 %n | |
| ret void | |
| } | |
| ; Check that .stack_sizes section is linked to the function's section (.text), | |
| ; and not to the section containing the jump table (.rodata). | |
| ; CHECK-LABEL: linked_section: | |
| ; CHECK: .section .rodata,"a",@progbits | |
| ; CHECK: .section .stack_sizes,"o",@progbits,.text | |
| ; CHECK-NEXT: .xword .Lfunc_begin3 | |
| ; CHECK-NEXT: .ascii "\220\001" | |
| declare void @case0() | |
| declare void @case1() | |
| declare void @case2() | |
| declare void @case3() | |
| define void @linked_section(i32 %x) { | |
| %arr = alloca [32 x i32] | |
| switch i32 %x, label %sw.epilog [ | |
| i32 0, label %sw.bb0 | |
| i32 1, label %sw.bb1 | |
| i32 2, label %sw.bb2 | |
| i32 3, label %sw.bb3 | |
| ] | |
| sw.bb0: | |
| call void @case0() | |
| ret void | |
| sw.bb1: | |
| call void @case1() | |
| ret void | |
| sw.bb2: | |
| call void @case2() | |
| ret void | |
| sw.bb3: | |
| call void @case3() | |
| ret void | |
| sw.epilog: | |
| ret void | |
| } |