mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
7a1b190bcd
This helps reduce the frequency of stack realignment prologues in 32-bit X86 Windows code. Before this change and the corresponding clang change, we would take the max of the type preferred alignment and the explicit alignment on the alloca. If you don't override aggregate alignment in datalayout, you get a default of 8. This dates back to 2007 / r34356, and changing it seems prohibitively difficult at this point. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236270 91177308-0d34-0410-b5e6-96231b3b80d8
27 lines
672 B
LLVM
27 lines
672 B
LLVM
; RUN: llc < %s -mtriple=i686-pc-win32 | FileCheck %s
|
|
|
|
%Foo = type { i32, i32 }
|
|
|
|
declare x86_stdcallcc void @f(%Foo* inalloca %a)
|
|
declare x86_stdcallcc void @i(i32 %a)
|
|
|
|
define void @g() {
|
|
; CHECK-LABEL: _g:
|
|
%b = alloca inalloca %Foo
|
|
; CHECK: movl $8, %eax
|
|
; CHECK: calll __chkstk
|
|
%f1 = getelementptr %Foo, %Foo* %b, i32 0, i32 0
|
|
%f2 = getelementptr %Foo, %Foo* %b, i32 0, i32 1
|
|
store i32 13, i32* %f1
|
|
store i32 42, i32* %f2
|
|
; CHECK: movl $13, (%esp)
|
|
; CHECK: movl $42, 4(%esp)
|
|
call x86_stdcallcc void @f(%Foo* inalloca %b)
|
|
; CHECK: calll _f@8
|
|
; CHECK-NOT: %esp
|
|
; CHECK: pushl
|
|
; CHECK: calll _i@4
|
|
call x86_stdcallcc void @i(i32 0)
|
|
ret void
|
|
}
|