forked from OSchip/llvm-project
Use CHECK-LABEL to make this test more strict.
llvm-svn: 196321
This commit is contained in:
parent
2ec3db36f5
commit
f4d34153f5
|
@ -13,15 +13,15 @@
|
|||
|
||||
define void @sret1(i8* sret %x) nounwind {
|
||||
entry:
|
||||
; WIN32: sret1
|
||||
; WIN32-LABEL: _sret1:
|
||||
; WIN32: movb $42, (%eax)
|
||||
; WIN32-NOT: popl %eax
|
||||
; WIN32: {{ret$}}
|
||||
|
||||
; MINGW_X86: sret1
|
||||
; MINGW_X86-LABEL: _sret1:
|
||||
; MINGW_X86: ret $4
|
||||
|
||||
; LINUX: sret1
|
||||
; LINUX-LABEL: sret1:
|
||||
; LINUX: ret $4
|
||||
|
||||
store i8 42, i8* %x, align 4
|
||||
|
@ -30,15 +30,15 @@ entry:
|
|||
|
||||
define void @sret2(i8* sret %x, i8 %y) nounwind {
|
||||
entry:
|
||||
; WIN32: sret2
|
||||
; WIN32-LABEL: _sret2:
|
||||
; WIN32: movb {{.*}}, (%eax)
|
||||
; WIN32-NOT: popl %eax
|
||||
; WIN32: {{ret$}}
|
||||
|
||||
; MINGW_X86: sret2
|
||||
; MINGW_X86-LABEL: _sret2:
|
||||
; MINGW_X86: ret $4
|
||||
|
||||
; LINUX: sret2
|
||||
; LINUX-LABEL: sret2:
|
||||
; LINUX: ret $4
|
||||
|
||||
store i8 %y, i8* %x
|
||||
|
@ -47,16 +47,16 @@ entry:
|
|||
|
||||
define void @sret3(i8* sret %x, i8* %y) nounwind {
|
||||
entry:
|
||||
; WIN32: sret3
|
||||
; WIN32-LABEL: _sret3:
|
||||
; WIN32: movb $42, (%eax)
|
||||
; WIN32-NOT: movb $13, (%eax)
|
||||
; WIN32-NOT: popl %eax
|
||||
; WIN32: {{ret$}}
|
||||
|
||||
; MINGW_X86: sret3
|
||||
; MINGW_X86-LABEL: _sret3:
|
||||
; MINGW_X86: ret $4
|
||||
|
||||
; LINUX: sret3
|
||||
; LINUX-LABEL: sret3:
|
||||
; LINUX: ret $4
|
||||
|
||||
store i8 42, i8* %x
|
||||
|
@ -69,15 +69,15 @@ entry:
|
|||
|
||||
define void @sret4(%struct.S4* noalias sret %agg.result) {
|
||||
entry:
|
||||
; WIN32: sret4
|
||||
; WIN32-LABEL: _sret4:
|
||||
; WIN32: movl $42, (%eax)
|
||||
; WIN32-NOT: popl %eax
|
||||
; WIN32: {{ret$}}
|
||||
|
||||
; MINGW_X86: sret4
|
||||
; MINGW_X86-LABEL: _sret4:
|
||||
; MINGW_X86: ret $4
|
||||
|
||||
; LINUX: sret4
|
||||
; LINUX-LABEL: sret4:
|
||||
; LINUX: ret $4
|
||||
|
||||
%x = getelementptr inbounds %struct.S4* %agg.result, i32 0, i32 0
|
||||
|
@ -96,7 +96,9 @@ entry:
|
|||
%x = getelementptr inbounds %struct.S5* %agg.result, i32 0, i32 0
|
||||
store i32 42, i32* %x, align 4
|
||||
ret void
|
||||
; WIN32: {{^}}"?foo@C5@@QAE?AUS5@@XZ":
|
||||
; WIN32-LABEL: {{^}}"?foo@C5@@QAE?AUS5@@XZ":
|
||||
; MINGW_X86-LABEL: {{^}}"?foo@C5@@QAE?AUS5@@XZ":
|
||||
; LINUX-LABEL: {{^}}"?foo@C5@@QAE?AUS5@@XZ":
|
||||
|
||||
; The address of the return structure is passed as an implicit parameter.
|
||||
; In the -O0 build, %eax is spilled at the beginning of the function, hence we
|
||||
|
@ -111,7 +113,10 @@ entry:
|
|||
%c = alloca %class.C5, align 1
|
||||
%s = alloca %struct.S5, align 4
|
||||
call x86_thiscallcc void @"\01?foo@C5@@QAE?AUS5@@XZ"(%struct.S5* sret %s, %class.C5* %c)
|
||||
; WIN32: {{^}}_call_foo5:
|
||||
; WIN32-LABEL: {{^}}_call_foo5:
|
||||
; MINGW_X86-LABEL: {{^}}_call_foo5:
|
||||
; LINUX-LABEL: {{^}}call_foo5:
|
||||
|
||||
|
||||
; Load the address of the result and put it onto stack
|
||||
; (through %ecx in the -O0 build).
|
||||
|
@ -130,6 +135,7 @@ entry:
|
|||
define void @test6_f(%struct.test6* %x) nounwind {
|
||||
; WIN32-LABEL: _test6_f:
|
||||
; MINGW_X86-LABEL: _test6_f:
|
||||
; LINUX-LABEL: test6_f:
|
||||
|
||||
; The %x argument is moved to %ecx. It will be the this pointer.
|
||||
; WIN32: movl 8(%ebp), %ecx
|
||||
|
|
Loading…
Reference in New Issue