40 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -global-isel=1 -mtriple=x86_64-linux-gnu -o - %s | FileCheck %s3 4declare void @use_addr(ptr)5declare ptr @llvm.stacksave.p0()6declare void @llvm.stackrestore.p0(ptr)7 8define void @test_scoped_alloca(i64 %n) {9; CHECK-LABEL: test_scoped_alloca:10; CHECK: # %bb.0:11; CHECK-NEXT: pushq %rbp12; CHECK-NEXT: .cfi_def_cfa_offset 1613; CHECK-NEXT: .cfi_offset %rbp, -1614; CHECK-NEXT: movq %rsp, %rbp15; CHECK-NEXT: .cfi_def_cfa_register %rbp16; CHECK-NEXT: pushq %rbx17; CHECK-NEXT: pushq %rax18; CHECK-NEXT: .cfi_offset %rbx, -2419; CHECK-NEXT: movq %rsp, %rbx20; CHECK-NEXT: movq %rsp, %rax21; CHECK-NEXT: imulq $1, %rdi, %rcx22; CHECK-NEXT: addq $15, %rcx23; CHECK-NEXT: andq $-16, %rcx24; CHECK-NEXT: subq %rcx, %rax25; CHECK-NEXT: movq %rax, %rsp26; CHECK-NEXT: movq %rax, %rdi27; CHECK-NEXT: callq use_addr28; CHECK-NEXT: movq %rbx, %rsp29; CHECK-NEXT: leaq -8(%rbp), %rsp30; CHECK-NEXT: popq %rbx31; CHECK-NEXT: popq %rbp32; CHECK-NEXT: .cfi_def_cfa %rsp, 833; CHECK-NEXT: retq34 %sp = call ptr @llvm.stacksave.p0()35 %addr = alloca i8, i64 %n36 call void @use_addr(ptr %addr)37 call void @llvm.stackrestore.p0(ptr %sp)38 ret void39}40