| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_sp |
| ; RUN: llc < %s -tailcallopt=false | FileCheck %s |
| |
| ; PR3122 |
| ; rdar://6400815 |
| |
| ; byval requires a copy, even with fastcc. |
| |
| target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" |
| target triple = "i386-apple-darwin9.5" |
| |
| %struct.MVT = type { i32 } |
| |
| define fastcc i32 @bar() nounwind { |
| ; CHECK-LABEL: bar: |
| ; CHECK: ## %bb.0: |
| ; CHECK-NEXT: subl $12, %esp |
| ; CHECK-NEXT: movl $1, 8(%esp) |
| ; CHECK-NEXT: movl $1, (%esp) |
| ; CHECK-NEXT: calll _foo |
| ; CHECK-NEXT: movl 8(%esp), %eax |
| ; CHECK-NEXT: addl $12, %esp |
| ; CHECK-NEXT: retl |
| %V = alloca %struct.MVT |
| store i32 1, ptr %V |
| call fastcc void @foo(ptr byval(%struct.MVT) %V) nounwind |
| %t = load i32, ptr %V |
| ret i32 %t |
| } |
| |
| declare fastcc void @foo(ptr byval(%struct.MVT)) |