mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-31 16:02:52 +01:00
5395ec6ee4
X86. Basically, this is a reapplication of r158087 with a few fixes. Specifically, (1) the stack pointer is restored from the base pointer before popping callee-saved registers and (2) in obscure cases (see comments in patch) we must cache the value of the original stack adjustment in the prologue and apply it in the epilogue. rdar://11496434 llvm-svn: 160002
21 lines
429 B
LLVM
21 lines
429 B
LLVM
; RUN: llc < %s -march=x86-64 -mtriple=i686-pc-linux | FileCheck %s
|
|
|
|
declare void @bar(<2 x i64>* %n)
|
|
|
|
define void @foo(i64 %h) {
|
|
%p = alloca <2 x i64>, i64 %h
|
|
call void @bar(<2 x i64>* %p)
|
|
ret void
|
|
; CHECK: foo
|
|
; CHECK-NOT: andq $-32, %rax
|
|
}
|
|
|
|
define void @foo2(i64 %h) {
|
|
%p = alloca <2 x i64>, i64 %h, align 32
|
|
call void @bar(<2 x i64>* %p)
|
|
ret void
|
|
; CHECK: foo2
|
|
; CHECK: andq $-32, %rsp
|
|
; CHECK: andq $-32, %rax
|
|
}
|