28 lines
		
	
	
		
			689 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			689 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: pushl   %eax
 | |
| ; CHECK: pushl   %eax
 | |
|   %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 %esp, %eax
 | |
| ; CHECK: movl    $13, (%eax)
 | |
| ; CHECK: movl    $42, 4(%eax)
 | |
|   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
 | |
| }
 |