diff options
| author | Philip Reames <listmail@philipreames.com> | 2019-07-18 00:26:03 +0000 |
|---|---|---|
| committer | Philip Reames <listmail@philipreames.com> | 2019-07-18 00:26:03 +0000 |
| commit | 9cdd2152b92703bfac118f7cc0b3eb934b95cdaf (patch) | |
| tree | 1c555057c1c147fda65c85bf684350dea218bb2c | |
| parent | 0c6ad3d5d19f04f476a7b2d9202dee2e3a6e9f73 (diff) | |
| download | bcm5719-llvm-9cdd2152b92703bfac118f7cc0b3eb934b95cdaf.tar.gz bcm5719-llvm-9cdd2152b92703bfac118f7cc0b3eb934b95cdaf.zip | |
[Tests] Add a test showing how we handle overaligned allocas w/ no-realign-stack
(At the moment, we ignore the alignment requirement.)
llvm-svn: 366393
| -rw-r--r-- | llvm/test/CodeGen/X86/alloca-overaligned.ll | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/alloca-overaligned.ll b/llvm/test/CodeGen/X86/alloca-overaligned.ll new file mode 100644 index 00000000000..8ac50d8eb82 --- /dev/null +++ b/llvm/test/CodeGen/X86/alloca-overaligned.ll @@ -0,0 +1,55 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=skylake | FileCheck %s + +declare void @capture(i64*) + +define void @test_natural() "no-realign-stack" { +; CHECK-LABEL: test_natural: +; CHECK: # %bb.0: +; CHECK-NEXT: pushq %rax +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: movq %rsp, %rdi +; CHECK-NEXT: callq capture +; CHECK-NEXT: popq %rax +; CHECK-NEXT: .cfi_def_cfa_offset 8 +; CHECK-NEXT: retq + %a = alloca i64 + call void @capture(i64* %a) + ret void +} + +define void @test_realign() { +; CHECK-LABEL: test_realign: +; CHECK: # %bb.0: +; CHECK-NEXT: pushq %rbp +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: .cfi_offset %rbp, -16 +; CHECK-NEXT: movq %rsp, %rbp +; CHECK-NEXT: .cfi_def_cfa_register %rbp +; CHECK-NEXT: andq $-64, %rsp +; CHECK-NEXT: subq $64, %rsp +; CHECK-NEXT: movq %rsp, %rdi +; CHECK-NEXT: callq capture +; CHECK-NEXT: movq %rbp, %rsp +; CHECK-NEXT: popq %rbp +; CHECK-NEXT: .cfi_def_cfa %rsp, 8 +; CHECK-NEXT: retq + %a = alloca i64, align 64 + call void @capture(i64* %a) + ret void +} + +define void @test_norealign() "no-realign-stack" { +; CHECK-LABEL: test_norealign: +; CHECK: # %bb.0: +; CHECK-NEXT: pushq %rax +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: movq %rsp, %rdi +; CHECK-NEXT: callq capture +; CHECK-NEXT: popq %rax +; CHECK-NEXT: .cfi_def_cfa_offset 8 +; CHECK-NEXT: retq + %a = alloca i64, align 64 + call void @capture(i64* %a) + ret void +} |

