Default stack alignment for 32bit x86 should be 4 Bytes, not 8 Bytes.

Add a test that checks the stack alignment of a simple function for
Darwin, Linux and NetBSD for 32bit and 64bit mode.

llvm-svn: 147888
This commit is contained in:
Joerg Sonnenberger 2012-01-10 22:43:53 +00:00
parent 428f5b2008
commit 96cd35cf6d
2 changed files with 26 additions and 1 deletions

View File

@ -333,7 +333,7 @@ X86Subtarget::X86Subtarget(const std::string &TT, const std::string &CPU,
, IsUAMemFast(false)
, HasVectorUAMem(false)
, HasCmpxchg16b(false)
, stackAlignment(8)
, stackAlignment(4)
// FIXME: this is a known good value for Yonah. How about others?
, MaxInlineSizeThreshold(128)
, TargetTriple(TT)

View File

@ -0,0 +1,25 @@
; RUN: llc < %s -mtriple=i386-linux | FileCheck %s -check-prefix=LINUX-I386
; RUN: llc < %s -mtriple=i386-netbsd | FileCheck %s -check-prefix=NETBSD-I386
; RUN: llc < %s -mtriple=i686-apple-darwin8 | FileCheck %s -check-prefix=DARWIN-I386
; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=LINUX-X86_64
; RUN: llc < %s -mtriple=x86_64-netbsd | FileCheck %s -check-prefix=NETBSD-X86_64
; RUN: llc < %s -mtriple=x86_64-apple-darwin8 | FileCheck %s -check-prefix=DARWIN-X86_64
define i32 @test() nounwind {
entry:
call void @test2()
ret i32 0
; LINUX-I386: subl $12, %esp
; DARWIN-I386: subl $12, %esp
; NETBSD-I386-NOT: subl {{.*}}, %esp
; LINUX-X86_64: pushq %{{.*}}
; LINUX-X86_64-NOT: subq {{.*}}, %rsp
; DARWIN-X86_64: pushq %{{.*}}
; DARWIN-X86_64-NOT: subq {{.*}}, %rsp
; NETBSD-X86_64: pushq %{{.*}}
; NETBSD-X86_64-NOT: subq {{.*}}, %rsp
}
declare void @test2()