mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-12 23:40:54 +00:00
1c74502fd9
Third time's the charm? The previous attempt (r265345) caused ASan test failures on X86, as broken CFI caused stack traces to not work. This version of the patch makes sure not to merge with stack adjustments that have CFI, and to not add merged instructions' offests to the CFI about to be generated. This is already covered by the lit tests; I just got the expectations wrong previously. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265623 91177308-0d34-0410-b5e6-96231b3b80d8
41 lines
1.1 KiB
LLVM
41 lines
1.1 KiB
LLVM
; RUN: llc < %s -mtriple=i686-windows | FileCheck %s -check-prefix=CHECK -check-prefix=NORMAL
|
|
; RUN: llc < %s -mtriple=i686-windows -mattr=call-reg-indirect | FileCheck %s -check-prefix=CHECK -check-prefix=SLM
|
|
|
|
declare void @foo(i32 %r)
|
|
|
|
define void @test(i32 %a, i32 %b) optsize nounwind {
|
|
; CHECK-LABEL: test:
|
|
; CHECK: movl [[EAX:%e..]], (%esp)
|
|
; CHECK-NEXT: pushl [[EAX]]
|
|
; CHECK-NEXT: calll
|
|
; CHECK-NEXT: addl $4, %esp
|
|
; CHECK: nop
|
|
; NORMAL: pushl (%esp)
|
|
; SLM: movl (%esp), [[RELOAD:%e..]]
|
|
; SLM-NEXT: pushl [[RELOAD]]
|
|
; CHECK: calll
|
|
; CHECK-NEXT: addl $8, %esp
|
|
%c = add i32 %a, %b
|
|
call void @foo(i32 %c)
|
|
call void asm sideeffect "nop", "~{ax},~{bx},~{cx},~{dx},~{bp},~{si},~{di}"()
|
|
call void @foo(i32 %c)
|
|
ret void
|
|
}
|
|
|
|
define void @test_min(i32 %a, i32 %b) minsize nounwind {
|
|
; CHECK-LABEL: test_min:
|
|
; CHECK: movl [[EAX:%e..]], (%esp)
|
|
; CHECK-NEXT: pushl [[EAX]]
|
|
; CHECK-NEXT: calll
|
|
; CHECK-NEXT: popl
|
|
; CHECK: nop
|
|
; CHECK: pushl (%esp)
|
|
; CHECK: calll
|
|
; CHECK-NEXT: popl
|
|
%c = add i32 %a, %b
|
|
call void @foo(i32 %c)
|
|
call void asm sideeffect "nop", "~{ax},~{bx},~{cx},~{dx},~{bp},~{si},~{di}"()
|
|
call void @foo(i32 %c)
|
|
ret void
|
|
}
|