// RUN: %clang_cc1 -no-opaque-pointers -fno-elide-constructors -S -emit-llvm %s -triple x86_64-unknown-linux-gnu -o - | FileCheck %s
// RUN: %clang_cc1 -no-opaque-pointers -fno-elide-constructors -S -emit-llvm %s -triple x86_64-unknown-linux-gnu -o - | opt -verify
// FIXME: remove the call to "opt" once the tests are running the Clang verifier automatically again.
int ;
int ;
int
int
// CHECK: %call1 = musttail call noundef i32 @_Z3Bari(i32 noundef %call)
;
int
// CHECK: %call = musttail call noundef i32 @_ZN3Foo14MemberFunctionEi(%class.Foo* noundef nonnull align 1 dereferenceable(1) %this1, i32 noundef %0)
int
// CHECK: %call = musttail call noundef i32 @_ZN3Foo12StaticMethodEi(i32 noundef %0)
int
// CHECK: %call = musttail call noundef i32 @_ZN3Foo12StaticMethodEi(i32 noundef %0)
int ;
int
// CHECK: %call = musttail call noundef i32 %8(%class.Foo* noundef nonnull align 1 dereferenceable(1) %this.adjusted, i32 noundef %9)
int
// CHECK: %call = musttail call noundef i32 %8(%class.Foo* noundef nonnull align 1 dereferenceable(1) %this.adjusted, i32 noundef %9)
void ;
void
// CHECK: musttail call void @_Z11ReturnsVoidv()
;
int ;
int
// CHECK: %call = musttail call noundef i32 @_Z10ReturnsInti(i32 noundef %0)
;
int
// CHECK: %call = musttail call noundef i32 %1(%struct.Data* noundef %2)
T
int
// CHECK: %call = musttail call noundef i32 @_Z12TemplateFuncIiET_S0_(i32 noundef %0)
int
int
// CHECK: %call = musttail call noundef i32 @_Z3Bari(i32 noundef %0)
T
int
// CHECK: %call = musttail call noundef i32 @_Z3Bari(i32 noundef %0)
int
// CHECK: %call = musttail call noundef i32 @_Z3Bari(i32 noundef %3)
void ;
void
// CHECK: musttail call void @_Z22TrivialDestructorParam20HasTrivialDestructor()
;
void
// CHECK: musttail call void @_ZNK7Struct319ConstMemberFunctionEPKi(%struct.Struct3* noundef nonnull align 1 dereferenceable(1) %this1, i32* noundef %0)
;
HasNonTrivialCopyConstructor ;
HasNonTrivialCopyConstructor
// CHECK: musttail call void @_Z19ReturnsClassByValuev(%struct.HasNonTrivialCopyConstructor* sret(%struct.HasNonTrivialCopyConstructor) align 1 %agg.result)
;
HasNonTrivialCopyConstructor2 ;
HasNonTrivialCopyConstructor2
// CHECK: musttail call void @_Z20ReturnsClassByValue2v()
void
// CHECK: musttail call void %0(i32 noundef %1)
;
LargeWithCopyConstructor ;
LargeWithCopyConstructor
// CHECK: define dso_local void @_Z28TestLargeWithCopyConstructorv(%struct.LargeWithCopyConstructor* noalias sret(%struct.LargeWithCopyConstructor) align 1 %agg.result)
// CHECK: musttail call void @_Z12ReturnsLargev(%struct.LargeWithCopyConstructor* sret(%struct.LargeWithCopyConstructor) align 1 %agg.result)
using IntFunctionType = int;
IntFunctionType *;
int
// CHECK: musttail call noundef i32 %call()
void
// CHECK: musttail call void @_Z14FuncWithParensv()
int
// CHECK: %call = call noundef i32 ()* @"_ZZ22TestNonCapturingLambdavENK3$_0cvPFivEEv"(%class.anon* noundef nonnull align 1 dereferenceable(1) %lambda)
// CHECK: musttail call noundef i32 %call()
;
void
// CHECK: musttail call void %1(%class.TestVirtual* noundef nonnull align 8 dereferenceable(8) %this1)