mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
4c16866a59
Currently the backend special cases x86_intrcc and treats the first parameter as byval. Make the IR require byval for this parameter to remove this special case, and avoid the dependence on the pointee element type. Fixes bug 46672. I'm not sure the IR is enforcing all the calling convention constraints. clang seems to ignore the attribute for empty parameter lists, but the IR tolerates it.
20 lines
538 B
LLVM
20 lines
538 B
LLVM
; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx < %s | FileCheck %s
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Checks that interrupt handler code does not call "vzeroupper" instruction
|
|
;; before iret.
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; CHECK: vzeroupper
|
|
; CHECK-NEXT: call
|
|
; CHECK-NOT: vzeroupper
|
|
; CHECK: iret
|
|
|
|
define x86_intrcc void @foo(i8* byval(i8) %frame) {
|
|
call void @bar()
|
|
ret void
|
|
}
|
|
|
|
declare void @bar()
|
|
|