// RUN: %clang_cc1 -no-opaque-pointers -triple i386-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
// Non-trivial dtors, should both be passed indirectly.
;
// CHECK-LABEL: define{{.*}} void @_Z1fv(%struct.S* noalias sret(%struct.S) align 2 %
S
// CHECK-LABEL: define{{.*}} void @_Z1f1S(%struct.S* noundef %0)
void
// Non-trivial dtors, should both be passed indirectly.
;
// CHECK-LABEL: define{{.*}} void @_Z1gv(%class.C* noalias sret(%class.C) align 4 %
C
// CHECK-LABEL: define{{.*}} void @_Z1f1C(%class.C* noundef %0)
void
// PR7058 - Missing byval on MI thunk definition.
// CHECK-LABEL: define{{.*}} void @_ZThn4_N18BasicAliasAnalysis13getModRefInfoE8CallSite
// ...
// CHECK: %struct.CallSite* noundef byval(%struct.CallSite) align 4 %CS)
;
;
;
;
void
// Check various single element struct type conditions.
//
// PR7098.
// CHECK-LABEL: define{{.*}} i64 @_Z2f0v()
;
;
s0_1
// CHECK-LABEL: define{{.*}} i32 @_Z2f1v()
;
;
s1_1
// CHECK-LABEL: define{{.*}} double @_Z2f2v()
;
;
s2_1
// CHECK-LABEL: define{{.*}} double @_Z2f3v()
;
;
;
s3_2
// CHECK-LABEL: define{{.*}} i64 @_Z2f4v()
;
;
;
s4_2
// CHECK-LABEL: define{{.*}} i32* @_Z2f5v()
;
s5
// CHECK-LABEL: define{{.*}} i32 @_Z4f6_0M2s6i(i32 %a)
// CHECK: define{{.*}} i64 @_Z4f6_1M2s6FivE({ i32, i32 }* noundef byval({ i32, i32 }) align 4 %0)
// FIXME: It would be nice to avoid byval on the previous case.
;
typedef int s6::* s6_mdp;
typedef int ;
s6_mdp
s6_mfp
// CHECK-LABEL: define{{.*}} double @_Z2f7v()
;
;
;
s7
// CHECK-LABEL: define{{.*}} void @_Z2f8v(%struct.s8* noalias sret(%struct.s8) align 4 %agg.result)
;
;
;
s8
// CHECK-LABEL: define{{.*}} void @_Z2f9v(%struct.s9* noalias sret(%struct.s9) align 4 %agg.result)
;
;
;
s9