mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160002 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
430 B
LLVM
21 lines
430 B
LLVM
; RUN: llc < %s -march=x86 -mtriple=i686-apple-darwin | FileCheck %s
|
|
|
|
declare void @bar(<2 x i64>* %n)
|
|
|
|
define void @foo(i32 %h) {
|
|
%p = alloca <2 x i64>, i32 %h
|
|
call void @bar(<2 x i64>* %p)
|
|
ret void
|
|
; CHECK: foo
|
|
; CHECK-NOT: andl $-32, %eax
|
|
}
|
|
|
|
define void @foo2(i32 %h) {
|
|
%p = alloca <2 x i64>, i32 %h, align 32
|
|
call void @bar(<2 x i64>* %p)
|
|
ret void
|
|
; CHECK: foo2
|
|
; CHECK: andl $-32, %esp
|
|
; CHECK: andl $-32, %eax
|
|
}
|