; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mcpu=generic -mtriple=i686-- | FileCheck %s %struct.W = type { x86_fp80, x86_fp80 } @B = global %struct.W { x86_fp80 0xK4001A000000000000000, x86_fp80 0xK4001C000000000000000 }, align 32 @.cpx = internal constant %struct.W { x86_fp80 0xK4001E000000000000000, x86_fp80 0xK40028000000000000000 } define i32 @main() nounwind { ; CHECK-LABEL: main: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: pushl %ebx ; CHECK-NEXT: pushl %edi ; CHECK-NEXT: pushl %esi ; CHECK-NEXT: movl .cpx+20, %eax ; CHECK-NEXT: movl .cpx+16, %ecx ; CHECK-NEXT: movl .cpx+12, %edx ; CHECK-NEXT: movl .cpx+8, %esi ; CHECK-NEXT: movl .cpx+4, %edi ; CHECK-NEXT: movl .cpx, %ebx ; CHECK-NEXT: pushl %eax ; CHECK-NEXT: pushl %ecx ; CHECK-NEXT: pushl %edx ; CHECK-NEXT: pushl %esi ; CHECK-NEXT: pushl %edi ; CHECK-NEXT: pushl %ebx ; CHECK-NEXT: pushl $3 ; CHECK-NEXT: calll bar ; CHECK-NEXT: addl $28, %esp ; CHECK-NEXT: movl B+20, %eax ; CHECK-NEXT: movl B+16, %ecx ; CHECK-NEXT: movl B+12, %edx ; CHECK-NEXT: movl B+8, %esi ; CHECK-NEXT: movl B+4, %edi ; CHECK-NEXT: movl B, %ebx ; CHECK-NEXT: pushl %eax ; CHECK-NEXT: pushl %ecx ; CHECK-NEXT: pushl %edx ; CHECK-NEXT: pushl %esi ; CHECK-NEXT: pushl %edi ; CHECK-NEXT: pushl %ebx ; CHECK-NEXT: pushl $3 ; CHECK-NEXT: calll baz ; CHECK-NEXT: addl $28, %esp ; CHECK-NEXT: popl %esi ; CHECK-NEXT: popl %edi ; CHECK-NEXT: popl %ebx ; CHECK-NEXT: retl entry: tail call void (i32, ...) @bar( i32 3, %struct.W* byval(%struct.W) @.cpx ) nounwind tail call void (i32, ...) @baz( i32 3, %struct.W* byval(%struct.W) @B ) nounwind ret i32 undef } declare void @bar(i32, ...) declare void @baz(i32, ...)