Return "[CGCall] Annotate `this` argument with alignment"
The original change was reverted because it was discovered that clang mishandles thunks, and they receive wrong attributes for their this/return types - the ones for the function they will call, not the ones they have. While i have tried to fix this in https://reviews.llvm.org/D100388 that patch has been up and stuck for a month now, with little signs of progress. So while it will be good to solve this for real, for now we can simply avoid introducing the bug, by not annotating this/return for thunks. This reverts commit6270b3a1ea
, relanding0aa0458f14
.
This commit is contained in:
parent
a624cec56d
commit
16d0381841
|
@ -2319,7 +2319,7 @@ void CodeGenModule::ConstructAttributeList(StringRef Name,
|
|||
llvm::AttributeSet::get(getLLVMContext(), Attrs);
|
||||
}
|
||||
|
||||
// Apply `nonnull` and `dereferencable(N)` to the `this` argument,
|
||||
// Apply `nonnull`, `dereferencable(N)` and `align N` to the `this` argument,
|
||||
// unless this is a thunk function.
|
||||
// FIXME: fix this properly, https://reviews.llvm.org/D100388
|
||||
if (FI.isInstanceMethod() && !IRFunctionArgs.hasInallocaArg() &&
|
||||
|
@ -2330,13 +2330,13 @@ void CodeGenModule::ConstructAttributeList(StringRef Name,
|
|||
|
||||
llvm::AttrBuilder Attrs;
|
||||
|
||||
QualType ThisTy =
|
||||
FI.arg_begin()->type.castAs<PointerType>()->getPointeeType();
|
||||
|
||||
if (!CodeGenOpts.NullPointerIsValid &&
|
||||
getContext().getTargetAddressSpace(FI.arg_begin()->type) == 0) {
|
||||
Attrs.addAttribute(llvm::Attribute::NonNull);
|
||||
Attrs.addDereferenceableAttr(
|
||||
getMinimumObjectSize(
|
||||
FI.arg_begin()->type.castAs<PointerType>()->getPointeeType())
|
||||
.getQuantity());
|
||||
Attrs.addDereferenceableAttr(getMinimumObjectSize(ThisTy).getQuantity());
|
||||
} else {
|
||||
// FIXME dereferenceable should be correct here, regardless of
|
||||
// NullPointerIsValid. However, dereferenceable currently does not always
|
||||
|
@ -2348,6 +2348,12 @@ void CodeGenModule::ConstructAttributeList(StringRef Name,
|
|||
.getQuantity());
|
||||
}
|
||||
|
||||
llvm::Align Alignment =
|
||||
getNaturalTypeAlignment(ThisTy, /*BaseInfo=*/nullptr,
|
||||
/*TBAAInfo=*/nullptr, /*forPointeeType=*/true)
|
||||
.getAsAlign();
|
||||
Attrs.addAlignmentAttr(Alignment);
|
||||
|
||||
ArgAttrs[IRArgs.first] = llvm::AttributeSet::get(getLLVMContext(), Attrs);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ void something_else_again() {
|
|||
// CHECK: %[[AG:.*]] = load void (%class.A*)*, void (%class.A*)**
|
||||
// CHECK-NEXT: call void %[[AG]](%class.A* {{.*}}) #[[ATTR0]]
|
||||
// CHECK: %[[BG:.*]] = load void (%class.B*)*, void (%class.B*)**
|
||||
// CHECK-NEXT: call void %[[BG]](%class.B* nonnull dereferenceable
|
||||
// CHECK-NEXT: call void %[[BG]](%class.B* nonnull align {{.*}} dereferenceable
|
||||
// CHECK: call void @_ZN1AC1Ev({{.*}}) #[[ATTR0]]
|
||||
// CHECK: call void @_ZN1A1fEv({{.*}}) #[[ATTR0]]
|
||||
// CHECK: call void @_ZN1A1gEv({{.*}}) #[[ATTR0]]
|
||||
|
|
|
@ -36,7 +36,7 @@ int Foo::TailFrom(int x) {
|
|||
[[clang::musttail]] return MemberFunction(x);
|
||||
}
|
||||
|
||||
// CHECK: %call = musttail call i32 @_ZN3Foo14MemberFunctionEi(%class.Foo* nonnull dereferenceable(1) %this1, i32 %0)
|
||||
// CHECK: %call = musttail call i32 @_ZN3Foo14MemberFunctionEi(%class.Foo* nonnull align 1 dereferenceable(1) %this1, i32 %0)
|
||||
|
||||
int Func3(int x) {
|
||||
[[clang::musttail]] return Foo::StaticMethod(x);
|
||||
|
@ -57,13 +57,13 @@ int Foo::TailFrom2(int x) {
|
|||
[[clang::musttail]] return ((*this).*pmf)(x);
|
||||
}
|
||||
|
||||
// CHECK: %call = musttail call i32 %8(%class.Foo* nonnull dereferenceable(1) %this.adjusted, i32 %9)
|
||||
// CHECK: %call = musttail call i32 %8(%class.Foo* nonnull align 1 dereferenceable(1) %this.adjusted, i32 %9)
|
||||
|
||||
int Foo::TailFrom3(int x) {
|
||||
[[clang::musttail]] return (this->*pmf)(x);
|
||||
}
|
||||
|
||||
// CHECK: %call = musttail call i32 %8(%class.Foo* nonnull dereferenceable(1) %this.adjusted, i32 %9)
|
||||
// CHECK: %call = musttail call i32 %8(%class.Foo* nonnull align 1 dereferenceable(1) %this.adjusted, i32 %9)
|
||||
|
||||
void ReturnsVoid();
|
||||
|
||||
|
@ -152,7 +152,7 @@ void Struct3::NonConstMemberFunction(int *i) {
|
|||
[[clang::musttail]] return ConstMemberFunction(i);
|
||||
}
|
||||
|
||||
// CHECK: musttail call void @_ZNK7Struct319ConstMemberFunctionEPKi(%struct.Struct3* nonnull dereferenceable(1) %this1, i32* %0)
|
||||
// CHECK: musttail call void @_ZNK7Struct319ConstMemberFunctionEPKi(%struct.Struct3* nonnull align 1 dereferenceable(1) %this1, i32* %0)
|
||||
|
||||
struct HasNonTrivialCopyConstructor {
|
||||
HasNonTrivialCopyConstructor(const HasNonTrivialCopyConstructor &);
|
||||
|
@ -213,7 +213,7 @@ int TestNonCapturingLambda() {
|
|||
[[clang::musttail]] return (+lambda)();
|
||||
}
|
||||
|
||||
// CHECK: %call = call i32 ()* @"_ZZ22TestNonCapturingLambdavENK3$_0cvPFivEEv"(%class.anon* nonnull dereferenceable(1) %lambda)
|
||||
// CHECK: %call = call i32 ()* @"_ZZ22TestNonCapturingLambdavENK3$_0cvPFivEEv"(%class.anon* nonnull align 1 dereferenceable(1) %lambda)
|
||||
// CHECK: musttail call i32 %call()
|
||||
|
||||
class TestVirtual {
|
||||
|
@ -225,4 +225,4 @@ void TestVirtual::TailFrom() {
|
|||
[[clang::musttail]] return TailTo();
|
||||
}
|
||||
|
||||
// CHECK: musttail call void %1(%class.TestVirtual* nonnull dereferenceable(8) %this1)
|
||||
// CHECK: musttail call void %1(%class.TestVirtual* nonnull align 8 dereferenceable(8) %this1)
|
||||
|
|
|
@ -11,10 +11,10 @@ struct Struct {
|
|||
void TestReturnsVoid(Struct &s) {
|
||||
s.ReturnsVoid();
|
||||
|
||||
// CHECK-YES: call void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* nonnull dereferenceable(12) %0)
|
||||
// CHECK-YES: call void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* nonnull align 4 dereferenceable(12) %0)
|
||||
/// FIXME Use dereferenceable after dereferenceable respects NullPointerIsValid.
|
||||
// CHECK-NO: call void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* dereferenceable_or_null(12) %0)
|
||||
// CHECK-NO: call void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* align 4 dereferenceable_or_null(12) %0)
|
||||
}
|
||||
|
||||
// CHECK-YES: declare void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* nonnull dereferenceable(12))
|
||||
// CHECK-NO: declare void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* dereferenceable_or_null(12))
|
||||
// CHECK-YES: declare void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* nonnull align 4 dereferenceable(12))
|
||||
// CHECK-NO: declare void @_ZN6Struct11ReturnsVoidEv(%struct.Struct* align 4 dereferenceable_or_null(12))
|
||||
|
|
|
@ -17,9 +17,9 @@ class alignas(16) Obj : public Base1, public Base2 {
|
|||
void Obj::Foo1() {}
|
||||
void Obj::Foo2() {}
|
||||
|
||||
// CHECK: define dso_local void @_ZN3Obj4Foo2Ev(%class.Obj.0* nonnull dereferenceable(16) %this) unnamed_addr #0 align 2 {
|
||||
// CHECK: define dso_local void @_ZN3Obj4Foo2Ev(%class.Obj.0* nonnull align 16 dereferenceable(16) %this) unnamed_addr #0 align 2 {
|
||||
|
||||
// FIXME: the argument should be %class.Base2.2* nonnull dereferenceable(8) %this
|
||||
// CHECK: define dso_local void @_ZThn8_N3Obj4Foo2Ev(%class.Obj.0* %this) unnamed_addr #1 align 2 {
|
||||
|
||||
// CHECK: tail call void @_ZN3Obj4Foo2Ev(%class.Obj.0* nonnull dereferenceable(16) %2)
|
||||
// CHECK: tail call void @_ZN3Obj4Foo2Ev(%class.Obj.0* nonnull align 16 dereferenceable(16) %2)
|
||||
|
|
|
@ -56,7 +56,7 @@ detached_task foo() {
|
|||
// CHECK: %[[CALL:.+]] = call i8* @_ZN13detached_task12promise_type13final_awaiter13await_suspendENSt12experimental13coroutines_v116coroutine_handleIS0_EE(
|
||||
// CHECK: %[[HDL_CAST2:.+]] = getelementptr inbounds %"struct.std::experimental::coroutines_v1::coroutine_handle.0", %"struct.std::experimental::coroutines_v1::coroutine_handle.0"* %[[HDL]], i32 0, i32 0
|
||||
// CHECK: store i8* %[[CALL]], i8** %[[HDL_CAST2]], align 8
|
||||
// CHECK: %[[HDL_TRANSFER:.+]] = call i8* @_ZNKSt12experimental13coroutines_v116coroutine_handleIvE7addressEv(%"struct.std::experimental::coroutines_v1::coroutine_handle.0"* nonnull dereferenceable(8) %[[HDL]])
|
||||
// CHECK: %[[HDL_TRANSFER:.+]] = call i8* @_ZNKSt12experimental13coroutines_v116coroutine_handleIvE7addressEv(%"struct.std::experimental::coroutines_v1::coroutine_handle.0"* nonnull align 8 dereferenceable(8) %[[HDL]])
|
||||
// CHECK: %[[HDL_CAST3:.+]] = bitcast %"struct.std::experimental::coroutines_v1::coroutine_handle.0"* %[[HDL]] to i8*
|
||||
// CHECK: call void @llvm.lifetime.end.p0i8(i64 8, i8* %[[HDL_CAST3]])
|
||||
// CHECK: call void @llvm.coro.resume(i8* %[[HDL_TRANSFER]])
|
||||
|
|
|
@ -227,7 +227,7 @@ namespace testNullReceiver {
|
|||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i64)*)({{.*}}, i64 %[[COERCE_VAL_PI]])
|
||||
// CHECK: br
|
||||
|
||||
// CHECK: %[[CALL1:.*]] = call %[[STRUCT_STRONG]]* @_ZN6StrongD1Ev(%[[STRUCT_STRONG]]* nonnull dereferenceable(8) %[[AGG_TMP]])
|
||||
// CHECK: %[[CALL1:.*]] = call %[[STRUCT_STRONG]]* @_ZN6StrongD1Ev(%[[STRUCT_STRONG]]* nonnull align 8 dereferenceable(8) %[[AGG_TMP]])
|
||||
// CHECK: br
|
||||
|
||||
void test0(C *c) {
|
||||
|
@ -241,7 +241,7 @@ void test0(C *c) {
|
|||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void ({{.*}}, %[[STRUCT_STRONGWEAK]]* %[[AGG_TMP]])
|
||||
// CHECK: br
|
||||
|
||||
// CHECK: %[[CALL1:.*]] = call %[[STRUCT_STRONGWEAK]]* @_ZN10StrongWeakD1Ev(%[[STRUCT_STRONGWEAK]]* nonnull dereferenceable(16) %[[AGG_TMP]])
|
||||
// CHECK: %[[CALL1:.*]] = call %[[STRUCT_STRONGWEAK]]* @_ZN10StrongWeakD1Ev(%[[STRUCT_STRONGWEAK]]* nonnull align 8 dereferenceable(16) %[[AGG_TMP]])
|
||||
// CHECK: br
|
||||
|
||||
void test1(C *c) {
|
||||
|
@ -253,7 +253,7 @@ void test1(C *c) {
|
|||
// CHECK-LABEL: define{{.*}} void @_ZN16testNullReceiver5test2EP1C(
|
||||
// CHECK: %[[AGG_TMP:.*]] = alloca %[[STRUCT_NONTRIVIAL]], align 8
|
||||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %[[STRUCT_NONTRIVIAL]]*)*)({{.*}}, %[[STRUCT_NONTRIVIAL]]* %[[AGG_TMP]])
|
||||
// CHECK-NEXT: call %[[STRUCT_NONTRIVIAL]]* @_ZN10NonTrivialD1Ev(%[[STRUCT_NONTRIVIAL]]* nonnull dereferenceable(8) %[[AGG_TMP]])
|
||||
// CHECK-NEXT: call %[[STRUCT_NONTRIVIAL]]* @_ZN10NonTrivialD1Ev(%[[STRUCT_NONTRIVIAL]]* nonnull align 8 dereferenceable(8) %[[AGG_TMP]])
|
||||
|
||||
void test2(C *c) {
|
||||
[c passNonTrivial:NonTrivial()];
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -790,7 +790,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK1-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK1-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK1-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1014,7 +1014,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1254,7 +1254,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1525,7 +1525,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1765,7 +1765,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2033,7 +2033,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 8
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2280,7 +2280,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 8, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 8, !llvm.access.group !11
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !11
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2534,7 +2534,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 8, !llvm.access.group !14
|
||||
// CHECK1-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 8, !llvm.access.group !14
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !14
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !14
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2583,7 +2583,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK2-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK2-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK2-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2807,7 +2807,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3047,7 +3047,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3318,7 +3318,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3558,7 +3558,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3826,7 +3826,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 8
|
||||
// CHECK2-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4073,7 +4073,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 8, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 8, !llvm.access.group !11
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !11
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4327,7 +4327,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 8, !llvm.access.group !14
|
||||
// CHECK2-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 8, !llvm.access.group !14
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !14
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !14
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4376,7 +4376,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK3-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK3-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK3-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -4592,7 +4592,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4824,7 +4824,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5086,7 +5086,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5318,7 +5318,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5572,7 +5572,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 4
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5811,7 +5811,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !12
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6054,7 +6054,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 4, !llvm.access.group !15
|
||||
// CHECK3-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 4, !llvm.access.group !15
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !15
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !15
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6103,7 +6103,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK4-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK4-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK4-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -6319,7 +6319,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6551,7 +6551,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6813,7 +6813,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7045,7 +7045,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7299,7 +7299,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 4
|
||||
// CHECK4-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7538,7 +7538,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !12
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7781,7 +7781,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 4, !llvm.access.group !15
|
||||
// CHECK4-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 4, !llvm.access.group !15
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !15
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !15
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7830,7 +7830,7 @@ int main() {
|
|||
// CHECK5-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK5-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK5-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -7857,7 +7857,7 @@ int main() {
|
|||
// CHECK6-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK6-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK6-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -7884,7 +7884,7 @@ int main() {
|
|||
// CHECK7-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK7-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK7-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK7-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -7911,7 +7911,7 @@ int main() {
|
|||
// CHECK8-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK8-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK8-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK8-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK8-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK8-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -790,7 +790,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK1-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK1-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK1-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1026,7 +1026,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1290,7 +1290,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1585,7 +1585,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1849,7 +1849,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2141,7 +2141,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 8
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 8
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2412,7 +2412,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 8, !llvm.access.group !23
|
||||
// CHECK1-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 8, !llvm.access.group !23
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !23
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !23
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2690,7 +2690,7 @@ int main() {
|
|||
// CHECK1-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 8, !llvm.access.group !27
|
||||
// CHECK1-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK1-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 8, !llvm.access.group !27
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !27
|
||||
// CHECK1-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !27
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2751,7 +2751,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK2-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK2-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK2-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2987,7 +2987,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3251,7 +3251,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3546,7 +3546,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3810,7 +3810,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 8
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4102,7 +4102,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 8
|
||||
// CHECK2-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 8
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4373,7 +4373,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 8, !llvm.access.group !23
|
||||
// CHECK2-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 8, !llvm.access.group !23
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !23
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !23
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4651,7 +4651,7 @@ int main() {
|
|||
// CHECK2-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 8, !llvm.access.group !27
|
||||
// CHECK2-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK2-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 8, !llvm.access.group !27
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(32) [[REF_TMP]]), !llvm.access.group !27
|
||||
// CHECK2-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 8 dereferenceable(32) [[REF_TMP]]), !llvm.access.group !27
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -4712,7 +4712,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK3-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK3-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK3-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -4940,7 +4940,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5196,7 +5196,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5482,7 +5482,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -5738,7 +5738,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK3-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6016,7 +6016,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 4
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6279,7 +6279,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 4, !llvm.access.group !24
|
||||
// CHECK3-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 4, !llvm.access.group !24
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !24
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !24
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6546,7 +6546,7 @@ int main() {
|
|||
// CHECK3-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 4, !llvm.access.group !28
|
||||
// CHECK3-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 4, !llvm.access.group !28
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !28
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !28
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -6607,7 +6607,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK4-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK4-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK4-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -6835,7 +6835,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7091,7 +7091,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE0_clEv"(%class.anon.1* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7377,7 +7377,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_2]], %class.anon.2* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE1_clEv"(%class.anon.2* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7633,7 +7633,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP30]], align 4
|
||||
// CHECK4-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[CLASS_ANON_3]], %class.anon.3* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP31]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE2_clEv"(%class.anon.3* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -7911,7 +7911,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP33]], align 4
|
||||
// CHECK4-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[CLASS_ANON_4]], %class.anon.4* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP34]], align 4
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE3_clEv"(%class.anon.4* nonnull align 4 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -8174,7 +8174,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP31]], align 4, !llvm.access.group !24
|
||||
// CHECK4-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[CLASS_ANON_5]], %class.anon.5* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP32]], align 4, !llvm.access.group !24
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !24
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE4_clEv"(%class.anon.5* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !24
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -8441,7 +8441,7 @@ int main() {
|
|||
// CHECK4-NEXT: store double** [[TMP2]], double*** [[TMP32]], align 4, !llvm.access.group !28
|
||||
// CHECK4-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[CLASS_ANON_6]], %class.anon.6* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK4-NEXT: store double** [[TMP3]], double*** [[TMP33]], align 4, !llvm.access.group !28
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull dereferenceable(16) [[REF_TMP]]), !llvm.access.group !28
|
||||
// CHECK4-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE5_clEv"(%class.anon.6* nonnull align 4 dereferenceable(16) [[REF_TMP]]), !llvm.access.group !28
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -8502,7 +8502,7 @@ int main() {
|
|||
// CHECK5-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK5-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK5-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -8529,7 +8529,7 @@ int main() {
|
|||
// CHECK6-NEXT: store double** [[C]], double*** [[TMP3]], align 8
|
||||
// CHECK6-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK6-NEXT: store i32* [[CH]], i32** [[TMP4]], align 8
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[REF_TMP]])
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -8556,7 +8556,7 @@ int main() {
|
|||
// CHECK7-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK7-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK7-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK7-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -8583,7 +8583,7 @@ int main() {
|
|||
// CHECK8-NEXT: store double** [[C]], double*** [[TMP3]], align 4
|
||||
// CHECK8-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[REF_TMP]], i32 0, i32 4
|
||||
// CHECK8-NEXT: store i32* [[CH]], i32** [[TMP4]], align 4
|
||||
// CHECK8-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK8-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 4 dereferenceable(20) [[REF_TMP]])
|
||||
// CHECK8-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1524,7 +1524,7 @@ int main() {
|
|||
// CHECK9-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK9-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK9-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1595,7 +1595,7 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1635,7 +1635,7 @@ int main() {
|
|||
// CHECK10-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK10-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK10-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1706,7 +1706,7 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1746,7 +1746,7 @@ int main() {
|
|||
// CHECK11-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK11-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1756,6 +1756,6 @@ int main() {
|
|||
// CHECK12-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK12-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
//
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -193,21 +193,21 @@ int main() {
|
|||
// CHECK1-NEXT: [[PVAR:%.*]] = alloca float*, align 8
|
||||
// CHECK1-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK1-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, float**, i64*)* @.omp_outlined. to void (i32*, i32*, ...)*), float** [[PVAR]], i64* [[LVAR]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK1-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: ret i32 [[TMP0]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -215,17 +215,17 @@ int main() {
|
|||
// CHECK1-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK1-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -347,30 +347,30 @@ int main() {
|
|||
// CHECK1-NEXT: [[SST:%.*]] = alloca [[STRUCT_SST:%.*]], align 4
|
||||
// CHECK1-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[LVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull dereferenceable(4) [[SST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[SST]])
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK1-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store i32* [[F1]], i32** [[LVAR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32*, i32** [[LVAR]], align 8
|
||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32**, i32*)* @.omp_outlined..2 to void (i32*, i32*, ...)*), i32** [[PVAR]], i32* [[TMP0]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -545,7 +545,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -556,22 +556,22 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN3SSTIiEC1Ev
|
||||
// CHECK1-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK1-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.SST*, %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -694,17 +694,17 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -715,7 +715,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN3SSTIiEC2Ev
|
||||
// CHECK1-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK1-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
|
@ -827,7 +827,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -836,7 +836,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -853,21 +853,21 @@ int main() {
|
|||
// CHECK2-NEXT: [[PVAR:%.*]] = alloca float*, align 8
|
||||
// CHECK2-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK2-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK2-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, float**, i64*)* @.omp_outlined. to void (i32*, i32*, ...)*), float** [[PVAR]], i64* [[LVAR]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK2-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: ret i32 [[TMP0]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -875,17 +875,17 @@ int main() {
|
|||
// CHECK2-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK2-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1007,30 +1007,30 @@ int main() {
|
|||
// CHECK2-NEXT: [[SST:%.*]] = alloca [[STRUCT_SST:%.*]], align 4
|
||||
// CHECK2-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[LVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull dereferenceable(4) [[SST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[SST]])
|
||||
// CHECK2-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK2-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store i32* [[F1]], i32** [[LVAR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32*, i32** [[LVAR]], align 8
|
||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32**, i32*)* @.omp_outlined..2 to void (i32*, i32*, ...)*), i32** [[PVAR]], i32* [[TMP0]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1205,7 +1205,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1216,22 +1216,22 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN3SSTIiEC1Ev
|
||||
// CHECK2-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK2-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.SST*, %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1354,17 +1354,17 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1375,7 +1375,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN3SSTIiEC2Ev
|
||||
// CHECK2-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK2-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
|
@ -1487,7 +1487,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1496,7 +1496,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1511,13 +1511,13 @@ int main() {
|
|||
// CHECK3-NEXT: [[SS:%.*]] = alloca [[STRUCT_SS:%.*]], align 8
|
||||
// CHECK3-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK3-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK3-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK3-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1525,12 +1525,12 @@ int main() {
|
|||
// CHECK3-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK3-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK3-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1659,7 +1659,7 @@ int main() {
|
|||
// CHECK3-NEXT: [[TMP27:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK3-NEXT: [[TMP28:%.*]] = load i32*, i32** [[_TMP11]], align 8
|
||||
// CHECK3-NEXT: store i32* [[TMP28]], i32** [[TMP27]], align 8
|
||||
// CHECK3-NEXT: call void @_ZZN2SSC1ERiENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @_ZZN2SSC1ERiENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1706,7 +1706,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZZN2SSC1ERiENKUlvE_clEv
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull dereferenceable(32) [[THIS:%.*]]) #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull align 8 dereferenceable(32) [[THIS:%.*]]) #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK3-NEXT: store %class.anon.0* [[THIS]], %class.anon.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1972,7 +1972,7 @@ int main() {
|
|||
// CHECK3-NEXT: [[TMP19:%.*]] = getelementptr inbounds [[CLASS_ANON_1]], %class.anon.1* [[REF_TMP]], i32 0, i32 1
|
||||
// CHECK3-NEXT: [[TMP20:%.*]] = load i32*, i32** [[_TMP3]], align 8
|
||||
// CHECK3-NEXT: store i32* [[TMP20]], i32** [[TMP19]], align 8
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.1* nonnull dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.1* nonnull align 8 dereferenceable(16) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2010,7 +2010,7 @@ int main() {
|
|||
// CHECK4-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[SS:%.*]] = alloca [[STRUCT_SS:%.*]], align 8
|
||||
// CHECK4-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK4-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK4-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i8*, i8** getelementptr inbounds ([[STRUCT___BLOCK_LITERAL_GENERIC:%.*]], %struct.__block_literal_generic* bitcast ({ i8**, i32, i32, i8*, %struct.__block_descriptor* }* @__block_literal_global to %struct.__block_literal_generic*), i32 0, i32 3), align 8
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = bitcast i8* [[TMP0]] to void (i8*)*
|
||||
// CHECK4-NEXT: call void [[TMP1]](i8* bitcast ({ i8**, i32, i32, i8*, %struct.__block_descriptor* }* @__block_literal_global to i8*))
|
||||
|
@ -2018,7 +2018,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK4-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2026,7 +2026,7 @@ int main() {
|
|||
// CHECK4-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK4-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2194,7 +2194,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK4-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2581,8 +2581,8 @@ int main() {
|
|||
// CHECK5-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK5-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
|
@ -2608,13 +2608,13 @@ int main() {
|
|||
// CHECK5: for.end:
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK5-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: [[TMP4:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: ret i32 [[TMP4]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2622,17 +2622,17 @@ int main() {
|
|||
// CHECK5-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK5-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2646,8 +2646,8 @@ int main() {
|
|||
// CHECK5-NEXT: [[TMP:%.*]] = alloca i32*, align 8
|
||||
// CHECK5-NEXT: [[_TMP2:%.*]] = alloca i32*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull dereferenceable(4) [[SST]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[SST]])
|
||||
// CHECK5-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK5-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
|
@ -2677,22 +2677,22 @@ int main() {
|
|||
// CHECK5-NEXT: store i32 [[INC3]], i32* [[I]], align 4
|
||||
// CHECK5-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK5: for.end:
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2752,7 +2752,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -2763,7 +2763,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -2772,37 +2772,37 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN3SSTIiEC1Ev
|
||||
// CHECK5-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK5-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.SST*, %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -2813,7 +2813,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN3SSTIiEC2Ev
|
||||
// CHECK5-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK5-NEXT: [[A2:%.*]] = alloca i32*, align 8
|
||||
|
@ -2849,7 +2849,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -2867,8 +2867,8 @@ int main() {
|
|||
// CHECK6-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK6-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
|
@ -2894,13 +2894,13 @@ int main() {
|
|||
// CHECK6: for.end:
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK6-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: [[TMP4:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: ret i32 [[TMP4]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2908,17 +2908,17 @@ int main() {
|
|||
// CHECK6-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK6-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2932,8 +2932,8 @@ int main() {
|
|||
// CHECK6-NEXT: [[TMP:%.*]] = alloca i32*, align 8
|
||||
// CHECK6-NEXT: [[_TMP2:%.*]] = alloca i32*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull dereferenceable(4) [[SST]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: call void @_ZN3SSTIiEC1Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[SST]])
|
||||
// CHECK6-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK6-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
|
@ -2963,22 +2963,22 @@ int main() {
|
|||
// CHECK6-NEXT: store i32 [[INC3]], i32* [[I]], align 4
|
||||
// CHECK6-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK6: for.end:
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3038,7 +3038,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -3049,7 +3049,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -3058,37 +3058,37 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN3SSTIiEC1Ev
|
||||
// CHECK6-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK6-NEXT: store %struct.SST* [[THIS]], %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.SST*, %struct.SST** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN3SSTIiEC2Ev(%struct.SST* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -3099,7 +3099,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN3SSTIiEC2Ev
|
||||
// CHECK6-SAME: (%struct.SST* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.SST* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SST*, align 8
|
||||
// CHECK6-NEXT: [[A2:%.*]] = alloca i32*, align 8
|
||||
|
@ -3135,7 +3135,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -3150,13 +3150,13 @@ int main() {
|
|||
// CHECK7-NEXT: [[SS:%.*]] = alloca [[STRUCT_SS:%.*]], align 8
|
||||
// CHECK7-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK7-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK7-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK7-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK7-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK7-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3164,12 +3164,12 @@ int main() {
|
|||
// CHECK7-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK7-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK7-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK7-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK7-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3218,7 +3218,7 @@ int main() {
|
|||
// CHECK7-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 3
|
||||
// CHECK7-NEXT: [[TMP10:%.*]] = load i32*, i32** [[_TMP7]], align 8
|
||||
// CHECK7-NEXT: store i32* [[TMP10]], i32** [[TMP9]], align 8
|
||||
// CHECK7-NEXT: call void @_ZZN2SSC1ERiENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK7-NEXT: call void @_ZZN2SSC1ERiENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(32) [[REF_TMP]])
|
||||
// CHECK7-NEXT: br label [[FOR_INC:%.*]]
|
||||
// CHECK7: for.inc:
|
||||
// CHECK7-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
|
@ -3230,7 +3230,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZZN2SSC1ERiENKUlvE_clEv
|
||||
// CHECK7-SAME: (%class.anon.0* nonnull dereferenceable(32) [[THIS:%.*]]) #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK7-SAME: (%class.anon.0* nonnull align 8 dereferenceable(32) [[THIS:%.*]]) #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK7-NEXT: [[TMP:%.*]] = alloca i32*, align 8
|
||||
|
@ -3303,7 +3303,7 @@ int main() {
|
|||
// CHECK8-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK8-NEXT: [[SS:%.*]] = alloca [[STRUCT_SS:%.*]], align 8
|
||||
// CHECK8-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK8-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK8-NEXT: call void @_ZN2SSC1ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[SS]], i32* nonnull align 4 dereferenceable(4) @_ZZ4mainE5sivar)
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i8*, i8** getelementptr inbounds ([[STRUCT___BLOCK_LITERAL_GENERIC:%.*]], %struct.__block_literal_generic* bitcast ({ i8**, i32, i32, i8*, %struct.__block_descriptor* }* @__block_literal_global to %struct.__block_literal_generic*), i32 0, i32 3), align 8
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = bitcast i8* [[TMP0]] to void (i8*)*
|
||||
// CHECK8-NEXT: call void [[TMP1]](i8* bitcast ({ i8**, i32, i32, i8*, %struct.__block_descriptor* }* @__block_literal_global to i8*))
|
||||
|
@ -3311,7 +3311,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSC1ERi
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK8-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3319,7 +3319,7 @@ int main() {
|
|||
// CHECK8-NEXT: store i32* [[D]], i32** [[D_ADDR]], align 8
|
||||
// CHECK8-NEXT: [[THIS1:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32*, i32** [[D_ADDR]], align 8
|
||||
// CHECK8-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK8-NEXT: call void @_ZN2SSC2ERi(%struct.SS* nonnull align 8 dereferenceable(16) [[THIS1]], i32* nonnull align 4 dereferenceable(4) [[TMP0]])
|
||||
// CHECK8-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -3403,7 +3403,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSC2ERi
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32* nonnull align 4 dereferenceable(4) [[D:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK8-NEXT: [[D_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -45,11 +45,11 @@ extern "C" void workshareloop_iterator(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: store float* [[A]], float** [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store float* [[B]], float** [[B_ADDR]], align 8
|
||||
// CHECK-NEXT: store float* [[C]], float** [[C_ADDR]], align 8
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1Ej(%struct.MyIterator* nonnull dereferenceable(1) [[IT]], i32 7)
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1Ej(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[IT]], i32 7)
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds [[STRUCT_ANON]], %struct.anon* [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK-NEXT: store %struct.MyIterator* [[IT]], %struct.MyIterator** [[TMP0]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds [[STRUCT_ANON_0]], %struct.anon.0* [[AGG_CAPTURED1]], i32 0, i32 0
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[TMP1]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[IT]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP1]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[IT]])
|
||||
// CHECK-NEXT: call void @__captured_stmt(i64* [[DOTCOUNT_ADDR]], %struct.anon* [[AGG_CAPTURED]])
|
||||
// CHECK-NEXT: [[DOTCOUNT:%.*]] = load i64, i64* [[DOTCOUNT_ADDR]], align 8
|
||||
// CHECK-NEXT: br label [[OMP_LOOP_PREHEADER:%.*]]
|
||||
|
@ -74,7 +74,7 @@ extern "C" void workshareloop_iterator(float *a, float *b, float *c) {
|
|||
// CHECK: omp_loop.body:
|
||||
// CHECK-NEXT: [[TMP7:%.*]] = add i64 [[OMP_LOOP_IV]], [[TMP3]]
|
||||
// CHECK-NEXT: call void @__captured_stmt.1(%struct.MyIterator* [[IT]], i64 [[TMP7]], %struct.anon.0* [[AGG_CAPTURED1]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull dereferenceable(1) [[IT]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[IT]])
|
||||
// CHECK-NEXT: store i32 [[CALL]], i32* [[I]], align 4
|
||||
// CHECK-NEXT: [[TMP8:%.*]] = load float*, float** [[B_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
|
@ -118,21 +118,21 @@ extern "C" void workshareloop_iterator(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: [[TMP0:%.*]] = load %struct.anon*, %struct.anon** [[__CONTEXT_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds [[STRUCT_ANON:%.*]], %struct.anon* [[TMP0]], i32 0, i32 0
|
||||
// CHECK-NEXT: [[TMP2:%.*]] = load %struct.MyIterator*, %struct.MyIterator** [[TMP1]], align 8
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP2]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1Ej(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTOP]], i32 41)
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP2]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1Ej(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]], i32 41)
|
||||
// CHECK-NEXT: store i64 1, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[TMP3:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[CMP:%.*]] = icmp ult i64 [[TMP3]], 0
|
||||
// CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
|
||||
// CHECK: cond.true:
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]])
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[CALL]] to i64
|
||||
// CHECK-NEXT: [[TMP4:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[SUB:%.*]] = sub i64 0, [[TMP4]]
|
||||
// CHECK-NEXT: [[DIV:%.*]] = udiv i64 [[CONV]], [[SUB]]
|
||||
// CHECK-NEXT: br label [[COND_END:%.*]]
|
||||
// CHECK: cond.false:
|
||||
// CHECK-NEXT: [[CALL1:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]])
|
||||
// CHECK-NEXT: [[CALL1:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]])
|
||||
// CHECK-NEXT: [[CONV2:%.*]] = sext i32 [[CALL1]] to i64
|
||||
// CHECK-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[DIV3:%.*]] = udiv i64 [[CONV2]], [[TMP5]]
|
||||
|
@ -159,8 +159,8 @@ extern "C" void workshareloop_iterator(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: [[TMP2:%.*]] = load i64, i64* [[LOGICAL_ADDR]], align 8
|
||||
// CHECK-NEXT: [[MUL:%.*]] = mul i64 1, [[TMP2]]
|
||||
// CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[MUL]] to i32
|
||||
// CHECK-NEXT: call void @_ZNK10MyIteratorplEj(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[REF_TMP]], %struct.MyIterator* nonnull dereferenceable(1) [[TMP1]], i32 [[CONV]])
|
||||
// CHECK-NEXT: call void @_ZNK10MyIteratorplEj(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[REF_TMP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP1]], i32 [[CONV]])
|
||||
// CHECK-NEXT: [[TMP3:%.*]] = load %struct.MyIterator*, %struct.MyIterator** [[LOOPVAR_ADDR]], align 8
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call nonnull align 1 dereferenceable(1) %struct.MyIterator* @_ZN10MyIteratoraSERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[TMP3]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call nonnull align 1 dereferenceable(1) %struct.MyIterator* @_ZN10MyIteratoraSERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP3]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK-NEXT: ret void
|
||||
//
|
||||
|
|
|
@ -54,20 +54,20 @@ extern "C" void workshareloop_rangefor(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: store float* [[A]], float** [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store float* [[B]], float** [[B_ADDR]], align 8
|
||||
// CHECK-NEXT: store float* [[C]], float** [[C_ADDR]], align 8
|
||||
// CHECK-NEXT: call void @_ZN7MyRangeC1Ei(%struct.MyRange* nonnull dereferenceable(1) [[REF_TMP]], i32 42)
|
||||
// CHECK-NEXT: call void @_ZN7MyRangeC1Ei(%struct.MyRange* nonnull align 1 dereferenceable(1) [[REF_TMP]], i32 42)
|
||||
// CHECK-NEXT: store %struct.MyRange* [[REF_TMP]], %struct.MyRange** [[__RANGE2]], align 8
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = load %struct.MyRange*, %struct.MyRange** [[__RANGE2]], align 8
|
||||
// CHECK-NEXT: call void @_ZN7MyRange5beginEv(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[__BEGIN2]], %struct.MyRange* nonnull dereferenceable(1) [[TMP0]])
|
||||
// CHECK-NEXT: call void @_ZN7MyRange5beginEv(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[__BEGIN2]], %struct.MyRange* nonnull align 1 dereferenceable(1) [[TMP0]])
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = load %struct.MyRange*, %struct.MyRange** [[__RANGE2]], align 8
|
||||
// CHECK-NEXT: call void @_ZN7MyRange3endEv(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[__END2]], %struct.MyRange* nonnull dereferenceable(1) [[TMP1]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull dereferenceable(1) [[__BEGIN2]])
|
||||
// CHECK-NEXT: call void @_ZN7MyRange3endEv(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[__END2]], %struct.MyRange* nonnull align 1 dereferenceable(1) [[TMP1]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[__BEGIN2]])
|
||||
// CHECK-NEXT: store i32 [[CALL]], i32* [[I]], align 4
|
||||
// CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds [[STRUCT_ANON]], %struct.anon* [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK-NEXT: store %struct.MyIterator* [[__BEGIN2]], %struct.MyIterator** [[TMP2]], align 8
|
||||
// CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds [[STRUCT_ANON]], %struct.anon* [[AGG_CAPTURED]], i32 0, i32 1
|
||||
// CHECK-NEXT: store %struct.MyIterator* [[__END2]], %struct.MyIterator** [[TMP3]], align 8
|
||||
// CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[STRUCT_ANON_0]], %struct.anon.0* [[AGG_CAPTURED1]], i32 0, i32 0
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[TMP4]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[__BEGIN2]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP4]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[__BEGIN2]])
|
||||
// CHECK-NEXT: call void @__captured_stmt(i64* [[DOTCOUNT_ADDR]], %struct.anon* [[AGG_CAPTURED]])
|
||||
// CHECK-NEXT: [[DOTCOUNT:%.*]] = load i64, i64* [[DOTCOUNT_ADDR]], align 8
|
||||
// CHECK-NEXT: br label [[OMP_LOOP_PREHEADER:%.*]]
|
||||
|
@ -134,23 +134,23 @@ extern "C" void workshareloop_rangefor(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: [[TMP0:%.*]] = load %struct.anon*, %struct.anon** [[__CONTEXT_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds [[STRUCT_ANON:%.*]], %struct.anon* [[TMP0]], i32 0, i32 0
|
||||
// CHECK-NEXT: [[TMP2:%.*]] = load %struct.MyIterator*, %struct.MyIterator** [[TMP1]], align 8
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP2]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP2]])
|
||||
// CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds [[STRUCT_ANON]], %struct.anon* [[TMP0]], i32 0, i32 1
|
||||
// CHECK-NEXT: [[TMP4:%.*]] = load %struct.MyIterator*, %struct.MyIterator** [[TMP3]], align 8
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP4]])
|
||||
// CHECK-NEXT: call void @_ZN10MyIteratorC1ERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP4]])
|
||||
// CHECK-NEXT: store i64 1, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[CMP:%.*]] = icmp ult i64 [[TMP5]], 0
|
||||
// CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
|
||||
// CHECK: cond.true:
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]])
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[CALL]] to i64
|
||||
// CHECK-NEXT: [[TMP6:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[SUB:%.*]] = sub i64 0, [[TMP6]]
|
||||
// CHECK-NEXT: [[DIV:%.*]] = udiv i64 [[CONV]], [[SUB]]
|
||||
// CHECK-NEXT: br label [[COND_END:%.*]]
|
||||
// CHECK: cond.false:
|
||||
// CHECK-NEXT: [[CALL1:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]])
|
||||
// CHECK-NEXT: [[CALL1:%.*]] = call i32 @_ZNK10MyIteratormiERKS_(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTOP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[DOTSTART]])
|
||||
// CHECK-NEXT: [[CONV2:%.*]] = sext i32 [[CALL1]] to i64
|
||||
// CHECK-NEXT: [[TMP7:%.*]] = load i64, i64* [[DOTSTEP]], align 8
|
||||
// CHECK-NEXT: [[DIV3:%.*]] = udiv i64 [[CONV2]], [[TMP7]]
|
||||
|
@ -177,8 +177,8 @@ extern "C" void workshareloop_rangefor(float *a, float *b, float *c) {
|
|||
// CHECK-NEXT: [[TMP2:%.*]] = load i64, i64* [[LOGICAL_ADDR]], align 8
|
||||
// CHECK-NEXT: [[MUL:%.*]] = mul i64 1, [[TMP2]]
|
||||
// CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[MUL]] to i32
|
||||
// CHECK-NEXT: call void @_ZNK10MyIteratorplEj(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[REF_TMP]], %struct.MyIterator* nonnull dereferenceable(1) [[TMP1]], i32 [[CONV]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK-NEXT: call void @_ZNK10MyIteratorplEj(%struct.MyIterator* sret([[STRUCT_MYITERATOR]]) align 1 [[REF_TMP]], %struct.MyIterator* nonnull align 1 dereferenceable(1) [[TMP1]], i32 [[CONV]])
|
||||
// CHECK-NEXT: [[CALL:%.*]] = call i32 @_ZNK10MyIteratordeEv(%struct.MyIterator* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK-NEXT: [[TMP3:%.*]] = load i32*, i32** [[LOOPVAR_ADDR]], align 8
|
||||
// CHECK-NEXT: store i32 [[CALL]], i32* [[TMP3]], align 4
|
||||
// CHECK-NEXT: ret void
|
||||
|
|
|
@ -64,7 +64,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -186,7 +186,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done8:
|
||||
|
@ -195,12 +195,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -312,7 +312,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK1: omp.arrayinit.body:
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -333,7 +333,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done1:
|
||||
|
@ -341,12 +341,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -369,8 +369,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -390,12 +390,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -674,7 +674,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -685,7 +685,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -694,7 +694,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -702,12 +702,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -741,7 +741,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -863,7 +863,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done8:
|
||||
|
@ -872,12 +872,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -989,7 +989,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK2: omp.arrayinit.body:
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK2-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -1010,7 +1010,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done1:
|
||||
|
@ -1018,12 +1018,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1046,8 +1046,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -1067,12 +1067,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1351,7 +1351,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1362,7 +1362,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1371,7 +1371,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1379,12 +1379,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1416,7 +1416,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1458,7 +1458,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done3:
|
||||
|
@ -1467,27 +1467,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1498,7 +1498,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1528,7 +1528,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1570,7 +1570,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done3:
|
||||
|
@ -1579,27 +1579,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1610,7 +1610,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -64,7 +64,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -186,7 +186,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done8:
|
||||
|
@ -195,12 +195,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -312,7 +312,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK1: omp.arrayinit.body:
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -333,7 +333,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done1:
|
||||
|
@ -341,12 +341,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -369,8 +369,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -390,12 +390,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -674,7 +674,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -685,7 +685,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -694,7 +694,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -702,12 +702,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -741,7 +741,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -863,7 +863,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done8:
|
||||
|
@ -872,12 +872,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -989,7 +989,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK2: omp.arrayinit.body:
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK2-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -1010,7 +1010,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done1:
|
||||
|
@ -1018,12 +1018,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1046,8 +1046,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -1067,12 +1067,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1351,7 +1351,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1362,7 +1362,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1371,7 +1371,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1379,12 +1379,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1420,7 +1420,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1475,7 +1475,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP12]], [[OMP_INNER_FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN6]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE7:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done7:
|
||||
|
@ -1484,27 +1484,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1515,7 +1515,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1549,7 +1549,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1604,7 +1604,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP12]], [[OMP_INNER_FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN6]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE7:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done7:
|
||||
|
@ -1613,27 +1613,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1644,7 +1644,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -341,7 +341,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT11]]
|
||||
// CHECK1: omp_offload.cont11:
|
||||
// CHECK1-NEXT: [[TMP171:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN1S3fooEv(%struct.S* nonnull dereferenceable(4) @s)
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN1S3fooEv(%struct.S* nonnull align 4 dereferenceable(4) @s)
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP171]], [[CALL]]
|
||||
// CHECK1-NEXT: ret i32 [[ADD]]
|
||||
//
|
||||
|
@ -392,7 +392,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store i32 [[TMP10]], i32* [[C7]], align 4
|
||||
// CHECK1-NEXT: store i32* [[C7]], i32** [[_TMP8]], align 8
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load %class.anon*, %class.anon** [[_TMP4]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP11]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP11]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -486,12 +486,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[TMP3]], align 4
|
||||
// CHECK1-NEXT: store i32 [[TMP13]], i32* [[A10]], align 4
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load %class.anon*, %class.anon** [[_TMP4]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP14]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP14]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1S3fooEv
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[L:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -612,12 +612,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP3]], i8* align 8 [[TMP4]], i64 8, i1 false)
|
||||
// CHECK1-NEXT: store %class.anon.0* [[L1]], %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP5]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP5]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZZN1S3fooEvENKUlvE_clEv
|
||||
// CHECK1-SAME: (%class.anon.0* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[THIS:%.*]]) #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK1-NEXT: store %class.anon.0* [[THIS]], %class.anon.0** [[THIS_ADDR]], align 8
|
||||
|
@ -668,7 +668,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP3]], i8* align 8 [[TMP4]], i64 8, i1 false)
|
||||
// CHECK1-NEXT: store %class.anon.0* [[L1]], %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP5]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP5]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -747,7 +747,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP2]], i8* align 8 [[TMP3]], i64 8, i1 false)
|
||||
// CHECK1-NEXT: store %class.anon.0* [[T1]], %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[TMP4:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP4]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP4]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -840,7 +840,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP10]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP11]], align 8
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = load %class.anon*, %class.anon** [[_TMP8]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull dereferenceable(8) [[TMP12]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull align 8 dereferenceable(8) [[TMP12]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK2: .termination.notifier:
|
||||
// CHECK2-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -851,7 +851,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZZN1S3fooEvENKUlvE_clEv
|
||||
// CHECK2-SAME: (%class.anon* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-SAME: (%class.anon* nonnull align 8 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon*, align 8
|
||||
// CHECK2-NEXT: store %class.anon* [[THIS]], %class.anon** [[THIS_ADDR]], align 8
|
||||
|
@ -924,7 +924,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP5]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP6]], align 8
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load %class.anon*, %class.anon** [[_TMP2]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull align 8 dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1047,7 +1047,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP23:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP16]], i32 0, i32 4
|
||||
// CHECK2-NEXT: store i32* [[TMP2]], i32** [[TMP23]], align 8
|
||||
// CHECK2-NEXT: [[TMP24:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP10]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon.0* nonnull dereferenceable(40) [[TMP24]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon.0* nonnull align 8 dereferenceable(40) [[TMP24]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK2: .termination.notifier:
|
||||
// CHECK2-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -1191,7 +1191,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP21:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP14]], i32 0, i32 4
|
||||
// CHECK2-NEXT: store i32* [[A10]], i32** [[TMP21]], align 8
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP4]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon.0* nonnull dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon.0* nonnull align 8 dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1245,7 +1245,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %class.anon* [[T1]], %class.anon** [[_TMP2]], align 8
|
||||
// CHECK2-NEXT: [[TMP4:%.*]] = load %class.anon*, %class.anon** [[_TMP2]], align 8
|
||||
// CHECK2-NEXT: [[TMP5:%.*]] = load %class.anon*, %class.anon** [[_TMP2]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon* nonnull align 8 dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1368,7 +1368,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP23:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP16]], i32 0, i32 4
|
||||
// CHECK3-NEXT: store i32* [[TMP2]], i32** [[TMP23]], align 8
|
||||
// CHECK3-NEXT: [[TMP24:%.*]] = load %class.anon*, %class.anon** [[_TMP10]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP24]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP24]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK3: .termination.notifier:
|
||||
// CHECK3-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -1512,7 +1512,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP21:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP14]], i32 0, i32 4
|
||||
// CHECK3-NEXT: store i32* [[A10]], i32** [[TMP21]], align 8
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = load %class.anon*, %class.anon** [[_TMP4]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1598,7 +1598,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP10]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP11]], align 8
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP8]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP12]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP12]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK3: .termination.notifier:
|
||||
// CHECK3-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -1609,7 +1609,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZZN1S3fooEvENKUlvE_clEv
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK3-NEXT: store %class.anon.0* [[THIS]], %class.anon.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1682,7 +1682,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP5]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP6]], align 8
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1736,7 +1736,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: store %class.anon.0* [[T1]], %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK3-NEXT: [[TMP4:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1859,7 +1859,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP23:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP16]], i32 0, i32 4
|
||||
// CHECK4-NEXT: store i32* [[TMP2]], i32** [[TMP23]], align 8
|
||||
// CHECK4-NEXT: [[TMP24:%.*]] = load %class.anon*, %class.anon** [[_TMP10]], align 8
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP24]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP24]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK4: .termination.notifier:
|
||||
// CHECK4-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -2003,7 +2003,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP21:%.*]] = getelementptr inbounds [[CLASS_ANON]], %class.anon* [[TMP14]], i32 0, i32 4
|
||||
// CHECK4-NEXT: store i32* [[A10]], i32** [[TMP21]], align 8
|
||||
// CHECK4-NEXT: [[TMP22:%.*]] = load %class.anon*, %class.anon** [[_TMP4]], align 8
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i64 @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 8 dereferenceable(40) [[TMP22]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2089,7 +2089,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP10]], i32 0, i32 0
|
||||
// CHECK4-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP11]], align 8
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP8]], align 8
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP12]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP12]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: br label [[DOTTERMINATION_NOTIFIER:%.*]]
|
||||
// CHECK4: .termination.notifier:
|
||||
// CHECK4-NEXT: call void @__kmpc_kernel_deinit(i16 1)
|
||||
|
@ -2100,7 +2100,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZZN1S3fooEvENKUlvE_clEv
|
||||
// CHECK4-SAME: (%class.anon.0* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK4-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK4-NEXT: store %class.anon.0* [[THIS]], %class.anon.0** [[THIS_ADDR]], align 8
|
||||
|
@ -2173,7 +2173,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[TMP5]], i32 0, i32 0
|
||||
// CHECK4-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP6]], align 8
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP7]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2227,6 +2227,6 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: store %class.anon.0* [[T1]], %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK4-NEXT: [[TMP4:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load %class.anon.0*, %class.anon.0** [[_TMP2]], align 8
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZZN1S3fooEvENKUlvE_clEv(%class.anon.0* nonnull align 8 dereferenceable(8) [[TMP5]]) #[[ATTR7]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
|
|
|
@ -478,7 +478,7 @@ void unreachable_call() {
|
|||
// CHECK1-NEXT: [[ADD26:%.*]] = add nsw i32 [[CONV25]], 1
|
||||
// CHECK1-NEXT: [[CONV27:%.*]] = trunc i32 [[ADD26]] to i8
|
||||
// CHECK1-NEXT: store i8 [[CONV27]], i8* [[Y]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK1-NEXT: [[ADD28:%.*]] = add nsw i64 [[TMP21]], 1
|
||||
// CHECK1-NEXT: store i64 [[ADD28]], i64* [[CALL]], align 8
|
||||
|
@ -492,7 +492,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK1-SAME: (%struct.TT* nonnull dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 8
|
||||
// CHECK1-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1309,7 +1309,7 @@ void unreachable_call() {
|
|||
// CHECK2-NEXT: [[ADD25:%.*]] = add nsw i32 [[CONV24]], 1
|
||||
// CHECK2-NEXT: [[CONV26:%.*]] = trunc i32 [[ADD25]] to i8
|
||||
// CHECK2-NEXT: store i8 [[CONV26]], i8* [[Y]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK2-NEXT: [[ADD27:%.*]] = add nsw i64 [[TMP21]], 1
|
||||
// CHECK2-NEXT: store i64 [[ADD27]], i64* [[CALL]], align 8
|
||||
|
@ -1323,7 +1323,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK2-SAME: (%struct.TT* nonnull dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 4
|
||||
// CHECK2-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2137,7 +2137,7 @@ void unreachable_call() {
|
|||
// CHECK3-NEXT: [[ADD25:%.*]] = add nsw i32 [[CONV24]], 1
|
||||
// CHECK3-NEXT: [[CONV26:%.*]] = trunc i32 [[ADD25]] to i8
|
||||
// CHECK3-NEXT: store i8 [[CONV26]], i8* [[Y]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK3-NEXT: [[ADD27:%.*]] = add nsw i64 [[TMP21]], 1
|
||||
// CHECK3-NEXT: store i64 [[ADD27]], i64* [[CALL]], align 8
|
||||
|
@ -2151,7 +2151,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK3-SAME: (%struct.TT* nonnull dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR5:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 4
|
||||
// CHECK3-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -195,7 +195,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP20:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: store float 0.000000e+00, float* [[REF_TMP2]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -248,7 +248,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC1ERKfS2_
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK1-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -259,7 +259,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load float*, float** [[__RE_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load float*, float** [[__IM_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -349,7 +349,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP23:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: store float 0.000000e+00, float* [[REF_TMP6]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[TMP24:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP25:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -411,8 +411,8 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK1-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to float
|
||||
// CHECK1-NEXT: store float [[CONV17]], float* [[REF_TMP16]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[TMP45:%.*]] = bitcast float* [[REF_TMP16]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP46:%.*]] = bitcast float* [[REF_TMP15]] to i8*
|
||||
|
@ -453,7 +453,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK1-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK1: .omp.reduction.then:
|
||||
// CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK1: .omp.reduction.done:
|
||||
|
@ -483,7 +483,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIfEpLIfEERS0_RKS_IT_E
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK1-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
|
@ -491,13 +491,13 @@ void test() {
|
|||
// CHECK1-NEXT: store %"class.std::complex"* [[__C]], %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load float, float* [[__RE_]], align 4, !tbaa [[TBAA18:![0-9]+]]
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = fadd float [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store float [[ADD]], float* [[__RE_]], align 4, !tbaa [[TBAA18]]
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load float, float* [[__IM_]], align 4, !tbaa [[TBAA20:![0-9]+]]
|
||||
// CHECK1-NEXT: [[ADD3:%.*]] = fadd float [[TMP3]], [[CALL2]]
|
||||
|
@ -830,7 +830,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP20:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: store double 0.000000e+00, double* [[REF_TMP2]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -883,7 +883,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC1ERKdS2_
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK1-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -894,7 +894,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load double*, double** [[__RE_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load double*, double** [[__IM_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -984,7 +984,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP23:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: store double 0.000000e+00, double* [[REF_TMP6]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[TMP24:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP25:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -1046,8 +1046,8 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK1-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to double
|
||||
// CHECK1-NEXT: store double [[CONV17]], double* [[REF_TMP16]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[TMP45:%.*]] = bitcast double* [[REF_TMP16]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[TMP46:%.*]] = bitcast double* [[REF_TMP15]] to i8*
|
||||
|
@ -1088,7 +1088,7 @@ void test() {
|
|||
// CHECK1-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK1-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK1: .omp.reduction.then:
|
||||
// CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK1: .omp.reduction.done:
|
||||
|
@ -1118,7 +1118,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIdEpLIdEERS0_RKS_IT_E
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK1-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
|
@ -1126,13 +1126,13 @@ void test() {
|
|||
// CHECK1-NEXT: store %"class.std::complex.1"* [[__C]], %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load double, double* [[__RE_]], align 8, !tbaa [[TBAA24:![0-9]+]]
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = fadd double [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store double [[ADD]], double* [[__RE_]], align 8, !tbaa [[TBAA24]]
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK1-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK1-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load double, double* [[__IM_]], align 8, !tbaa [[TBAA26:![0-9]+]]
|
||||
// CHECK1-NEXT: [[ADD3:%.*]] = fadd double [[TMP3]], [[CALL2]]
|
||||
|
@ -1318,7 +1318,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC2ERKfS2_
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK1-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -1339,7 +1339,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4realEv
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK1-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -1350,7 +1350,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4imagEv
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK1-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -1361,7 +1361,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC2ERKdS2_
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK1-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -1382,7 +1382,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4realEv
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK1-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -1393,7 +1393,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4imagEv
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK1-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -1565,7 +1565,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP20:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: store float 0.000000e+00, float* [[REF_TMP2]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -1618,7 +1618,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC1ERKfS2_
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK2-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -1629,7 +1629,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load float*, float** [[__RE_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load float*, float** [[__IM_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1719,7 +1719,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP23:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: store float 0.000000e+00, float* [[REF_TMP6]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[TMP24:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP25:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -1781,8 +1781,8 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK2-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to float
|
||||
// CHECK2-NEXT: store float [[CONV17]], float* [[REF_TMP16]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[TMP45:%.*]] = bitcast float* [[REF_TMP16]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP46:%.*]] = bitcast float* [[REF_TMP15]] to i8*
|
||||
|
@ -1823,7 +1823,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK2-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK2: .omp.reduction.then:
|
||||
// CHECK2-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK2: .omp.reduction.done:
|
||||
|
@ -1853,7 +1853,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIfEpLIfEERS0_RKS_IT_E
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK2-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
|
@ -1861,13 +1861,13 @@ void test() {
|
|||
// CHECK2-NEXT: store %"class.std::complex"* [[__C]], %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load float, float* [[__RE_]], align 4, !tbaa [[TBAA18:![0-9]+]]
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = fadd float [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store float [[ADD]], float* [[__RE_]], align 4, !tbaa [[TBAA18]]
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load float, float* [[__IM_]], align 4, !tbaa [[TBAA20:![0-9]+]]
|
||||
// CHECK2-NEXT: [[ADD3:%.*]] = fadd float [[TMP3]], [[CALL2]]
|
||||
|
@ -2200,7 +2200,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP20:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: store double 0.000000e+00, double* [[REF_TMP2]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -2253,7 +2253,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC1ERKdS2_
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK2-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -2264,7 +2264,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load double*, double** [[__RE_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load double*, double** [[__IM_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2354,7 +2354,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP23:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: store double 0.000000e+00, double* [[REF_TMP6]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[TMP24:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP25:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -2416,8 +2416,8 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK2-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to double
|
||||
// CHECK2-NEXT: store double [[CONV17]], double* [[REF_TMP16]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[TMP45:%.*]] = bitcast double* [[REF_TMP16]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[TMP46:%.*]] = bitcast double* [[REF_TMP15]] to i8*
|
||||
|
@ -2458,7 +2458,7 @@ void test() {
|
|||
// CHECK2-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK2-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK2: .omp.reduction.then:
|
||||
// CHECK2-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK2: .omp.reduction.done:
|
||||
|
@ -2488,7 +2488,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIdEpLIdEERS0_RKS_IT_E
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK2-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
|
@ -2496,13 +2496,13 @@ void test() {
|
|||
// CHECK2-NEXT: store %"class.std::complex.1"* [[__C]], %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load double, double* [[__RE_]], align 8, !tbaa [[TBAA24:![0-9]+]]
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = fadd double [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store double [[ADD]], double* [[__RE_]], align 8, !tbaa [[TBAA24]]
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK2-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK2-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load double, double* [[__IM_]], align 8, !tbaa [[TBAA26:![0-9]+]]
|
||||
// CHECK2-NEXT: [[ADD3:%.*]] = fadd double [[TMP3]], [[CALL2]]
|
||||
|
@ -2688,7 +2688,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC2ERKfS2_
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK2-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -2709,7 +2709,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4realEv
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK2-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -2720,7 +2720,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4imagEv
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK2-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -2731,7 +2731,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC2ERKdS2_
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK2-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -2752,7 +2752,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4realEv
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK2-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -2763,7 +2763,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4imagEv
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK2-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -2935,7 +2935,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP20:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: store float 0.000000e+00, float* [[REF_TMP2]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = bitcast float* [[REF_TMP2]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -2988,7 +2988,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC1ERKfS2_
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK3-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -2999,7 +2999,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load float*, float** [[__RE_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load float*, float** [[__IM_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC2ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS1]], float* nonnull align 4 dereferenceable(4) [[TMP0]], float* nonnull align 4 dereferenceable(4) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -3089,7 +3089,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP23:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: store float 0.000000e+00, float* [[REF_TMP6]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], float* nonnull align 4 dereferenceable(4) [[REF_TMP]], float* nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[TMP24:%.*]] = bitcast float* [[REF_TMP6]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP25:%.*]] = bitcast float* [[REF_TMP]] to i8*
|
||||
|
@ -3151,8 +3151,8 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK3-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to float
|
||||
// CHECK3-NEXT: store float [[CONV17]], float* [[REF_TMP16]], align 4, !tbaa [[TBAA16]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]], float* nonnull align 4 dereferenceable(4) [[REF_TMP15]], float* nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[TMP45:%.*]] = bitcast float* [[REF_TMP16]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP46:%.*]] = bitcast float* [[REF_TMP15]] to i8*
|
||||
|
@ -3193,7 +3193,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK3-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK3: .omp.reduction.then:
|
||||
// CHECK3-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) %"class.std::complex"* @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK3-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK3: .omp.reduction.done:
|
||||
|
@ -3223,7 +3223,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIfEpLIfEERS0_RKS_IT_E
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], %"class.std::complex"* nonnull align 4 dereferenceable(8) [[__C:%.*]]) #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK3-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
|
@ -3231,13 +3231,13 @@ void test() {
|
|||
// CHECK3-NEXT: store %"class.std::complex"* [[__C]], %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call float @_ZNKSt7complexIfE4realEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load float, float* [[__RE_]], align 4, !tbaa [[TBAA18:![0-9]+]]
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = fadd float [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store float [[ADD]], float* [[__RE_]], align 4, !tbaa [[TBAA18]]
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load %"class.std::complex"*, %"class.std::complex"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL2:%.*]] = call float @_ZNKSt7complexIfE4imagEv(%"class.std::complex"* nonnull align 4 dereferenceable(8) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex", %"class.std::complex"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load float, float* [[__IM_]], align 4, !tbaa [[TBAA20:![0-9]+]]
|
||||
// CHECK3-NEXT: [[ADD3:%.*]] = fadd float [[TMP3]], [[CALL2]]
|
||||
|
@ -3570,7 +3570,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP20:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP20]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: store double 0.000000e+00, double* [[REF_TMP2]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = bitcast double* [[REF_TMP2]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP21]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -3623,7 +3623,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC1ERKdS2_
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK3-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -3634,7 +3634,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load double*, double** [[__RE_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load double*, double** [[__IM_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC2ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS1]], double* nonnull align 8 dereferenceable(8) [[TMP0]], double* nonnull align 8 dereferenceable(8) [[TMP1]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -3724,7 +3724,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP23:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[TMP23]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: store double 0.000000e+00, double* [[REF_TMP6]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], double* nonnull align 8 dereferenceable(8) [[REF_TMP]], double* nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[TMP24:%.*]] = bitcast double* [[REF_TMP6]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP24]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP25:%.*]] = bitcast double* [[REF_TMP]] to i8*
|
||||
|
@ -3786,8 +3786,8 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP44:%.*]] = load i32, i32* [[I7]], align 4, !tbaa [[TBAA6]]
|
||||
// CHECK3-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP44]] to double
|
||||
// CHECK3-NEXT: store double [[CONV17]], double* [[REF_TMP16]], align 8, !tbaa [[TBAA22]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]], double* nonnull align 8 dereferenceable(8) [[REF_TMP15]], double* nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[TMP45:%.*]] = bitcast double* [[REF_TMP16]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[TMP45]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[TMP46:%.*]] = bitcast double* [[REF_TMP15]] to i8*
|
||||
|
@ -3828,7 +3828,7 @@ void test() {
|
|||
// CHECK3-NEXT: [[TMP61:%.*]] = icmp eq i32 [[TMP60]], 1
|
||||
// CHECK3-NEXT: br i1 [[TMP61]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
||||
// CHECK3: .omp.reduction.then:
|
||||
// CHECK3-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) %"class.std::complex.1"* @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP56]])
|
||||
// CHECK3-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
||||
// CHECK3: .omp.reduction.done:
|
||||
|
@ -3858,7 +3858,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIdEpLIdEERS0_RKS_IT_E
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], %"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[__C:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK3-NEXT: [[__C_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
|
@ -3866,13 +3866,13 @@ void test() {
|
|||
// CHECK3-NEXT: store %"class.std::complex.1"* [[__C]], %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call double @_ZNKSt7complexIdE4realEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP0]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[__RE_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load double, double* [[__RE_]], align 8, !tbaa [[TBAA24:![0-9]+]]
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = fadd double [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store double [[ADD]], double* [[__RE_]], align 8, !tbaa [[TBAA24]]
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load %"class.std::complex.1"*, %"class.std::complex.1"** [[__C_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
// CHECK3-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[CALL2:%.*]] = call double @_ZNKSt7complexIdE4imagEv(%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[TMP2]]) #[[ATTR7]]
|
||||
// CHECK3-NEXT: [[__IM_:%.*]] = getelementptr inbounds %"class.std::complex.1", %"class.std::complex.1"* [[THIS1]], i32 0, i32 1
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load double, double* [[__IM_]], align 8, !tbaa [[TBAA26:![0-9]+]]
|
||||
// CHECK3-NEXT: [[ADD3:%.*]] = fadd double [[TMP3]], [[CALL2]]
|
||||
|
@ -4058,7 +4058,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIfEC2ERKfS2_
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]], float* nonnull align 4 dereferenceable(4) [[__RE:%.*]], float* nonnull align 4 dereferenceable(4) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK3-NEXT: [[__RE_ADDR:%.*]] = alloca float*, align 8
|
||||
|
@ -4079,7 +4079,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4realEv
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK3-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -4090,7 +4090,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNKSt7complexIfE4imagEv
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex"* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex"*, align 8
|
||||
// CHECK3-NEXT: store %"class.std::complex"* [[THIS]], %"class.std::complex"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -4101,7 +4101,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNSt7complexIdEC2ERKdS2_
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]], double* nonnull align 8 dereferenceable(8) [[__RE:%.*]], double* nonnull align 8 dereferenceable(8) [[__IM:%.*]]) unnamed_addr #[[ATTR3]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK3-NEXT: [[__RE_ADDR:%.*]] = alloca double*, align 8
|
||||
|
@ -4122,7 +4122,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4realEv
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK3-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
@ -4133,7 +4133,7 @@ void test() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZNKSt7complexIdE4imagEv
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-SAME: (%"class.std::complex.1"* nonnull align 8 dereferenceable(16) [[THIS:%.*]]) #[[ATTR4]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %"class.std::complex.1"*, align 8
|
||||
// CHECK3-NEXT: store %"class.std::complex.1"* [[THIS]], %"class.std::complex.1"** [[THIS_ADDR]], align 8, !tbaa [[TBAA10]]
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -94,25 +94,25 @@ int main() {
|
|||
// CHECK1-NEXT: [[PVAR:%.*]] = alloca float*, align 8
|
||||
// CHECK1-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK1-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, float**, i64*)* @.omp_outlined. to void (i32*, i32*, ...)*), float** [[PVAR]], i64* [[LVAR]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK1-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK1-NEXT: ret i32 [[TMP0]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -227,27 +227,27 @@ int main() {
|
|||
// CHECK1-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
// CHECK1-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[LVAR:%.*]] = alloca i32, align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK1-NEXT: store i32 0, i32* [[LVAR]], align 4
|
||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32**, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32** [[PVAR]], i32* [[LVAR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -258,12 +258,12 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -372,17 +372,17 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -393,7 +393,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK1-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -402,7 +402,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -418,25 +418,25 @@ int main() {
|
|||
// CHECK2-NEXT: [[PVAR:%.*]] = alloca float*, align 8
|
||||
// CHECK2-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK2-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK2-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, float**, i64*)* @.omp_outlined. to void (i32*, i32*, ...)*), float** [[PVAR]], i64* [[LVAR]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK2-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK2-NEXT: ret i32 [[TMP0]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -551,27 +551,27 @@ int main() {
|
|||
// CHECK2-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
// CHECK2-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[LVAR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK2-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK2-NEXT: store i32 0, i32* [[LVAR]], align 4
|
||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32**, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32** [[PVAR]], i32* [[LVAR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -582,12 +582,12 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -696,17 +696,17 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -717,7 +717,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK2-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -726,7 +726,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -740,7 +740,7 @@ int main() {
|
|||
// CHECK3-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK3-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK3-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -808,7 +808,7 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[ADD5]], i32* [[G1]], align 4
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store i32* [[G1]], i32** [[TMP13]], align 8
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK3-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -985,7 +985,7 @@ int main() {
|
|||
// CHECK5-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK5-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
|
@ -1011,18 +1011,18 @@ int main() {
|
|||
// CHECK5: for.end:
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK5-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: [[TMP4:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: ret i32 [[TMP4]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1033,7 +1033,7 @@ int main() {
|
|||
// CHECK5-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK5-NEXT: [[LVAR:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK5-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK5-NEXT: store i32 0, i32* [[LVAR]], align 4
|
||||
|
@ -1057,22 +1057,22 @@ int main() {
|
|||
// CHECK5-NEXT: store i32 [[INC1]], i32* [[I]], align 4
|
||||
// CHECK5-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK5: for.end:
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1083,7 +1083,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1092,27 +1092,27 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1123,7 +1123,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK5-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1140,7 +1140,7 @@ int main() {
|
|||
// CHECK6-NEXT: [[LVAR:%.*]] = alloca i64, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TEST]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store float* [[F]], float** [[PVAR]], align 8
|
||||
// CHECK6-NEXT: store i64 0, i64* [[LVAR]], align 8
|
||||
|
@ -1166,18 +1166,18 @@ int main() {
|
|||
// CHECK6: for.end:
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
// CHECK6-NEXT: store i32 [[CALL]], i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: [[TMP4:%.*]] = load i32, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: ret i32 [[TMP4]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfEC1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIfEC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1188,7 +1188,7 @@ int main() {
|
|||
// CHECK6-NEXT: [[PVAR:%.*]] = alloca i32*, align 8
|
||||
// CHECK6-NEXT: [[LVAR:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]])
|
||||
// CHECK6-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0]], %struct.S.0* [[TEST]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32* [[F]], i32** [[PVAR]], align 8
|
||||
// CHECK6-NEXT: store i32 0, i32* [[LVAR]], align 4
|
||||
|
@ -1212,22 +1212,22 @@ int main() {
|
|||
// CHECK6-NEXT: store i32 [[INC1]], i32* [[I]], align 4
|
||||
// CHECK6-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK6: for.end:
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED1Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[TEST]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfED1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIfED2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfEC2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1238,7 +1238,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIfED2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1247,27 +1247,27 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiEC1Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SIiEC2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiED1Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S.0*, %struct.S.0** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: call void @_ZN1SIiED2Ev(%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiEC2Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1278,7 +1278,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SIiED2Ev
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S.0* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S.0*, align 8
|
||||
// CHECK6-NEXT: store %struct.S.0* [[THIS]], %struct.S.0** [[THIS_ADDR]], align 8
|
||||
|
@ -1292,7 +1292,7 @@ int main() {
|
|||
// CHECK7-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK7-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK7-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK7-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK7-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
|
|
@ -750,23 +750,23 @@ void parallel_master_allocate() {
|
|||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4
|
||||
// CHECK17-NEXT: [[Y_CASTED:%.*]] = alloca i64, align 8
|
||||
// CHECK17-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull dereferenceable(8) [[A]])
|
||||
// CHECK17-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]])
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = load i32, i32* @_ZZ36parallel_master_default_firstprivatevE1y, align 4
|
||||
// CHECK17-NEXT: [[CONV:%.*]] = bitcast i64* [[Y_CASTED]] to i32*
|
||||
// CHECK17-NEXT: store i32 [[TMP0]], i32* [[CONV]], align 4
|
||||
// CHECK17-NEXT: [[TMP1:%.*]] = load i64, i64* [[Y_CASTED]], align 8
|
||||
// CHECK17-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB1:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.St*, i64)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.St* [[A]], i64 [[TMP1]])
|
||||
// CHECK17-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK17-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2StC1Ev
|
||||
// CHECK17-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK17-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK17-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK17-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]])
|
||||
// CHECK17-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]])
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -810,17 +810,17 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2StD1Ev
|
||||
// CHECK17-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK17-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK17-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK17-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK17-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2StC2Ev
|
||||
// CHECK17-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK17-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -833,7 +833,7 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2StD2Ev
|
||||
// CHECK17-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK17-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -846,23 +846,23 @@ void parallel_master_allocate() {
|
|||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4
|
||||
// CHECK18-NEXT: [[Y_CASTED:%.*]] = alloca i64, align 8
|
||||
// CHECK18-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull dereferenceable(8) [[A]])
|
||||
// CHECK18-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]])
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = load i32, i32* @_ZZ36parallel_master_default_firstprivatevE1y, align 4
|
||||
// CHECK18-NEXT: [[CONV:%.*]] = bitcast i64* [[Y_CASTED]] to i32*
|
||||
// CHECK18-NEXT: store i32 [[TMP0]], i32* [[CONV]], align 4
|
||||
// CHECK18-NEXT: [[TMP1:%.*]] = load i64, i64* [[Y_CASTED]], align 8
|
||||
// CHECK18-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB1:[0-9]+]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.St*, i64)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.St* [[A]], i64 [[TMP1]])
|
||||
// CHECK18-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK18-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK18-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2StC1Ev
|
||||
// CHECK18-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK18-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK18-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK18-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]])
|
||||
// CHECK18-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]])
|
||||
// CHECK18-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -906,17 +906,17 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2StD1Ev
|
||||
// CHECK18-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4:[0-9]+]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK18-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK18-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK18-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK18-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK18-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2StC2Ev
|
||||
// CHECK18-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK18-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -929,7 +929,7 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2StD2Ev
|
||||
// CHECK18-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR4]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK18-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -941,7 +941,7 @@ void parallel_master_allocate() {
|
|||
// CHECK19-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4
|
||||
// CHECK19-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull dereferenceable(8) [[A]])
|
||||
// CHECK19-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]])
|
||||
// CHECK19-NEXT: [[A1:%.*]] = getelementptr inbounds [[STRUCT_ST]], %struct.St* [[A]], i32 0, i32 0
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = load i32, i32* [[A1]], align 4
|
||||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP0]], 1
|
||||
|
@ -956,32 +956,32 @@ void parallel_master_allocate() {
|
|||
// CHECK19-NEXT: [[TMP3:%.*]] = load i32, i32* @_ZN2St1yE, align 4
|
||||
// CHECK19-NEXT: [[INC3:%.*]] = add nsw i32 [[TMP3]], 1
|
||||
// CHECK19-NEXT: store i32 [[INC3]], i32* @_ZN2St1yE, align 4
|
||||
// CHECK19-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK19-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2StC1Ev
|
||||
// CHECK19-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK19-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK19-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK19-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]])
|
||||
// CHECK19-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]])
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2StD1Ev
|
||||
// CHECK19-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK19-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK19-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK19-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK19-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2StC2Ev
|
||||
// CHECK19-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK19-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -994,7 +994,7 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2StD2Ev
|
||||
// CHECK19-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK19-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -1006,7 +1006,7 @@ void parallel_master_allocate() {
|
|||
// CHECK20-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4
|
||||
// CHECK20-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull dereferenceable(8) [[A]])
|
||||
// CHECK20-NEXT: call void @_ZN2StC1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]])
|
||||
// CHECK20-NEXT: [[A1:%.*]] = getelementptr inbounds [[STRUCT_ST]], %struct.St* [[A]], i32 0, i32 0
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = load i32, i32* [[A1]], align 4
|
||||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP0]], 1
|
||||
|
@ -1021,32 +1021,32 @@ void parallel_master_allocate() {
|
|||
// CHECK20-NEXT: [[TMP3:%.*]] = load i32, i32* @_ZN2St1yE, align 4
|
||||
// CHECK20-NEXT: [[INC3:%.*]] = add nsw i32 [[TMP3]], 1
|
||||
// CHECK20-NEXT: store i32 [[INC3]], i32* @_ZN2St1yE, align 4
|
||||
// CHECK20-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK20-NEXT: call void @_ZN2StD1Ev(%struct.St* nonnull align 4 dereferenceable(8) [[A]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK20-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2StC1Ev
|
||||
// CHECK20-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK20-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK20-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK20-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]])
|
||||
// CHECK20-NEXT: call void @_ZN2StC2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]])
|
||||
// CHECK20-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2StD1Ev
|
||||
// CHECK20-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK20-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK20-NEXT: [[THIS1:%.*]] = load %struct.St*, %struct.St** [[THIS_ADDR]], align 8
|
||||
// CHECK20-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK20-NEXT: call void @_ZN2StD2Ev(%struct.St* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK20-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2StC2Ev
|
||||
// CHECK20-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK20-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
@ -1059,7 +1059,7 @@ void parallel_master_allocate() {
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2StD2Ev
|
||||
// CHECK20-SAME: (%struct.St* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.St* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR2]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.St*, align 8
|
||||
// CHECK20-NEXT: store %struct.St* [[THIS]], %struct.St** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -751,12 +751,12 @@ struct S {
|
|||
// CHECK1-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK1-SAME: () #[[ATTR7:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -764,12 +764,12 @@ struct S {
|
|||
// CHECK1-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1677,12 +1677,12 @@ struct S {
|
|||
// CHECK2-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK2-SAME: () #[[ATTR7:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1690,12 +1690,12 @@ struct S {
|
|||
// CHECK2-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2019,12 +2019,12 @@ struct S {
|
|||
// CHECK3-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK3-SAME: () #[[ATTR1:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2032,12 +2032,12 @@ struct S {
|
|||
// CHECK3-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2197,12 +2197,12 @@ struct S {
|
|||
// CHECK4-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK4-SAME: () #[[ATTR1:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2210,12 +2210,12 @@ struct S {
|
|||
// CHECK4-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -673,12 +673,12 @@ struct S {
|
|||
// CHECK1-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK1-SAME: () #[[ATTR6]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -686,12 +686,12 @@ struct S {
|
|||
// CHECK1-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1516,7 +1516,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1717,7 +1717,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1725,14 +1725,14 @@ struct S {
|
|||
// CHECK2-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK2-SAME: () #[[ATTR6]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2418,12 +2418,12 @@ struct S {
|
|||
// CHECK3-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK3-SAME: () #[[ATTR6]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2431,12 +2431,12 @@ struct S {
|
|||
// CHECK3-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3318,12 +3318,12 @@ struct S {
|
|||
// CHECK4-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK4-SAME: () #[[ATTR6]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3331,12 +3331,12 @@ struct S {
|
|||
// CHECK4-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR8]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3774,12 +3774,12 @@ struct S {
|
|||
// CHECK5-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK5-SAME: () #[[ATTR2:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3787,12 +3787,12 @@ struct S {
|
|||
// CHECK5-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4111,7 +4111,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4195,7 +4195,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4203,14 +4203,14 @@ struct S {
|
|||
// CHECK6-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK6-SAME: () #[[ATTR3:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -4517,12 +4517,12 @@ struct S {
|
|||
// CHECK7-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK7-SAME: () #[[ATTR2:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK7-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK7-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] align 2 {
|
||||
// CHECK7-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3:[0-9]+]] align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK7-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4530,12 +4530,12 @@ struct S {
|
|||
// CHECK7-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK7-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK7-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3]] align 2 {
|
||||
// CHECK7-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR3]] align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK7-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4919,7 +4919,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN1SC2Ei
|
||||
// CHECK8-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK8-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2:[0-9]+]] align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK8-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5003,7 +5003,7 @@ struct S {
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN1SC1Ei
|
||||
// CHECK8-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK8-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 [[C:%.*]]) unnamed_addr #[[ATTR2]] align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK8-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5011,14 +5011,14 @@ struct S {
|
|||
// CHECK8-NEXT: store i32 [[C]], i32* [[C_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK8-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: call void @_ZN1SC2Ei(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK8-SAME: () #[[ATTR3:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull dereferenceable(4) @s, i32 1)
|
||||
// CHECK8-NEXT: call void @_ZN1SC1Ei(%struct.S* nonnull align 4 dereferenceable(4) @s, i32 1)
|
||||
// CHECK8-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -87,7 +87,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[RED:%.*]] = alloca [[STRUCT_POINT:%.*]], align 4
|
||||
// NORM-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// NORM-NEXT: store %struct.Point* [[POINTS]], %struct.Point** [[POINTS_ADDR]], align 8
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED]]) #[[ATTR4:[0-9]+]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED]]) #[[ATTR4:[0-9]+]]
|
||||
// NORM-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined. to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
// NORM-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
// NORM-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
|
@ -100,12 +100,12 @@ void foo(int N, Point const *Points) {
|
|||
//
|
||||
//
|
||||
// NORM-LABEL: define {{[^@]+}}@_ZN5PointC1Ev
|
||||
// NORM-SAME: (%struct.Point* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// NORM-SAME: (%struct.Point* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// NORM-NEXT: entry:
|
||||
// NORM-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Point*, align 8
|
||||
// NORM-NEXT: store %struct.Point* [[THIS]], %struct.Point** [[THIS_ADDR]], align 8
|
||||
// NORM-NEXT: [[THIS1:%.*]] = load %struct.Point*, %struct.Point** [[THIS_ADDR]], align 8
|
||||
// NORM-NEXT: call void @_ZN5PointC2Ev(%struct.Point* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC2Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR4]]
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -156,7 +156,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1:[0-9]+]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -216,20 +216,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -256,10 +256,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -310,7 +310,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -370,20 +370,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -410,10 +410,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointplERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -464,7 +464,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -524,20 +524,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -564,10 +564,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointmlERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -618,7 +618,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -678,20 +678,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -718,10 +718,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointanERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -772,7 +772,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -832,20 +832,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -872,10 +872,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointorERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -926,7 +926,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -986,20 +986,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -1026,10 +1026,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointeoERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1080,7 +1080,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1140,20 +1140,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -1180,10 +1180,10 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1234,7 +1234,7 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// NORM-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// NORM-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// NORM-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1294,20 +1294,20 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// NORM-NEXT: ]
|
||||
// NORM: .omp.reduction.case1:
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.case2:
|
||||
// NORM-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// NORM-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// NORM-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// NORM-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// NORM-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// NORM-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// NORM: .omp.reduction.default:
|
||||
|
@ -1334,15 +1334,15 @@ void foo(int N, Point const *Points) {
|
|||
// NORM-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// NORM-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// NORM-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// NORM-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// NORM-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// NORM-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// NORM-LABEL: define {{[^@]+}}@_ZN5PointC2Ev
|
||||
// NORM-SAME: (%struct.Point* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {
|
||||
// NORM-SAME: (%struct.Point* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {
|
||||
// NORM-NEXT: entry:
|
||||
// NORM-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Point*, align 8
|
||||
// NORM-NEXT: store %struct.Point* [[THIS]], %struct.Point** [[THIS_ADDR]], align 8
|
||||
|
@ -1362,7 +1362,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[RED:%.*]] = alloca [[STRUCT_POINT:%.*]], align 4
|
||||
// COMP-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// COMP-NEXT: store %struct.Point* [[POINTS]], %struct.Point** [[POINTS_ADDR]], align 8
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED]]) #[[ATTR4:[0-9]+]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED]]) #[[ATTR4:[0-9]+]]
|
||||
// COMP-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3:[0-9]+]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined. to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
// COMP-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
// COMP-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB3]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, %struct.Point*, %struct.Point**)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32* [[N_ADDR]], %struct.Point* [[RED]], %struct.Point** [[POINTS_ADDR]])
|
||||
|
@ -1375,12 +1375,12 @@ void foo(int N, Point const *Points) {
|
|||
//
|
||||
//
|
||||
// COMP-LABEL: define {{[^@]+}}@_ZN5PointC1Ev
|
||||
// COMP-SAME: (%struct.Point* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// COMP-SAME: (%struct.Point* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {
|
||||
// COMP-NEXT: entry:
|
||||
// COMP-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Point*, align 8
|
||||
// COMP-NEXT: store %struct.Point* [[THIS]], %struct.Point** [[THIS_ADDR]], align 8
|
||||
// COMP-NEXT: [[THIS1:%.*]] = load %struct.Point*, %struct.Point** [[THIS_ADDR]], align 8
|
||||
// COMP-NEXT: call void @_ZN5PointC2Ev(%struct.Point* nonnull dereferenceable(8) [[THIS1]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC2Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[THIS1]]) #[[ATTR4]]
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1429,7 +1429,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1:[0-9]+]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1489,14 +1489,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -1522,7 +1522,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1571,7 +1571,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1631,14 +1631,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -1664,7 +1664,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointpLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1713,7 +1713,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1773,14 +1773,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -1806,7 +1806,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointmLERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1855,7 +1855,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -1915,14 +1915,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -1948,7 +1948,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaNERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1997,7 +1997,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -2057,14 +2057,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -2090,7 +2090,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointoRERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2139,7 +2139,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -2199,14 +2199,14 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP28:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32, i32* [[TMP28]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP29]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -2232,7 +2232,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointeOERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2283,7 +2283,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -2343,20 +2343,20 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// COMP-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// COMP-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -2383,10 +2383,10 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointaaERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// COMP-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2437,7 +2437,7 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: store i32 [[TMP6]], i32* [[DOTOMP_UB]], align 4
|
||||
// COMP-NEXT: store i32 1, i32* [[DOTOMP_STRIDE]], align 4
|
||||
// COMP-NEXT: store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: call void @_ZN5PointC1Ev(%struct.Point* nonnull align 4 dereferenceable(8) [[RED3]]) #[[ATTR4]]
|
||||
// COMP-NEXT: [[TMP7:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_for_static_init_4u(%struct.ident_t* @[[GLOB1]], i32 [[TMP8]], i32 34, i32* [[DOTOMP_IS_LAST]], i32* [[DOTOMP_LB]], i32* [[DOTOMP_UB]], i32* [[DOTOMP_STRIDE]], i32 1, i32 1)
|
||||
|
@ -2497,20 +2497,20 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: i32 2, label [[DOTOMP_REDUCTION_CASE2:%.*]]
|
||||
// COMP-NEXT: ]
|
||||
// COMP: .omp.reduction.case1:
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[TMP28:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL]], i64* [[TMP28]], align 4
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: [[CALL9:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: call void @__kmpc_end_reduce_nowait(%struct.ident_t* @[[GLOB2]], i32 [[TMP25]], [8 x i32]* @.gomp_critical_user_.reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.case2:
|
||||
// COMP-NEXT: [[TMP29:%.*]] = load i32*, i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// COMP-NEXT: [[TMP30:%.*]] = load i32, i32* [[TMP29]], align 4
|
||||
// COMP-NEXT: call void @__kmpc_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[CALL11:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[RED3]])
|
||||
// COMP-NEXT: [[TMP31:%.*]] = bitcast %struct.Point* [[REF_TMP10]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL11]], i64* [[TMP31]], align 4
|
||||
// COMP-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// COMP-NEXT: [[CALL12:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP1]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP10]])
|
||||
// COMP-NEXT: call void @__kmpc_end_critical(%struct.ident_t* @[[GLOB3]], i32 [[TMP30]], [8 x i32]* @.gomp_critical_user_.atomic_reduction.var)
|
||||
// COMP-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]]
|
||||
// COMP: .omp.reduction.default:
|
||||
|
@ -2537,15 +2537,15 @@ void foo(int N, Point const *Points) {
|
|||
// COMP-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[TMP3]], i64 0, i64 0
|
||||
// COMP-NEXT: [[TMP10:%.*]] = load i8*, i8** [[TMP9]], align 8
|
||||
// COMP-NEXT: [[TMP11:%.*]] = bitcast i8* [[TMP10]] to %struct.Point*
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[CALL:%.*]] = call i64 @_ZNK5PointooERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[TMP8]])
|
||||
// COMP-NEXT: [[TMP12:%.*]] = bitcast %struct.Point* [[REF_TMP]] to i64*
|
||||
// COMP-NEXT: store i64 [[CALL]], i64* [[TMP12]], align 4
|
||||
// COMP-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: [[CALL2:%.*]] = call nonnull align 4 dereferenceable(8) %struct.Point* @_ZN5PointaSERKS_(%struct.Point* nonnull align 4 dereferenceable(8) [[TMP11]], %struct.Point* nonnull align 4 dereferenceable(8) [[REF_TMP]])
|
||||
// COMP-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// COMP-LABEL: define {{[^@]+}}@_ZN5PointC2Ev
|
||||
// COMP-SAME: (%struct.Point* nonnull dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {
|
||||
// COMP-SAME: (%struct.Point* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {
|
||||
// COMP-NEXT: entry:
|
||||
// COMP-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Point*, align 8
|
||||
// COMP-NEXT: store %struct.Point* [[THIS]], %struct.Point** [[THIS_ADDR]], align 8
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -832,7 +832,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -851,7 +851,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1861,7 +1861,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1880,7 +1880,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2878,7 +2878,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -2897,7 +2897,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3883,7 +3883,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -3902,7 +3902,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4457,7 +4457,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4476,7 +4476,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4679,7 +4679,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4698,7 +4698,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4899,7 +4899,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4918,7 +4918,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5118,7 +5118,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -5137,7 +5137,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6961,7 +6961,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6980,7 +6980,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7183,7 +7183,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7202,7 +7202,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7403,7 +7403,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7422,7 +7422,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7622,7 +7622,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7641,7 +7641,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -8286,7 +8286,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK17-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8305,7 +8305,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9315,7 +9315,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK18-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -9334,7 +9334,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -10332,7 +10332,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK19-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -10351,7 +10351,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -11337,7 +11337,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK20-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -11356,7 +11356,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -11911,7 +11911,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK21-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -11930,7 +11930,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12133,7 +12133,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK22-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12152,7 +12152,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12353,7 +12353,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK23-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12372,7 +12372,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12572,7 +12572,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK24-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12591,7 +12591,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14415,7 +14415,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14434,7 +14434,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14637,7 +14637,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14656,7 +14656,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14857,7 +14857,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14876,7 +14876,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15076,7 +15076,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15095,7 +15095,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -1392,7 +1392,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1411,7 +1411,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3041,7 +3041,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -3060,7 +3060,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4658,7 +4658,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4677,7 +4677,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6263,7 +6263,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6282,7 +6282,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7017,7 +7017,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7036,7 +7036,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7379,7 +7379,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7398,7 +7398,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7739,7 +7739,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7758,7 +7758,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -8098,7 +8098,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8117,7 +8117,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -11667,7 +11667,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -11686,7 +11686,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12029,7 +12029,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12048,7 +12048,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12389,7 +12389,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12408,7 +12408,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12748,7 +12748,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12767,7 +12767,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -13992,7 +13992,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK17-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14011,7 +14011,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15641,7 +15641,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK18-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15660,7 +15660,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -17258,7 +17258,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK19-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -17277,7 +17277,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -18863,7 +18863,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK20-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -18882,7 +18882,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -19617,7 +19617,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK21-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -19636,7 +19636,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -19979,7 +19979,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK22-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -19998,7 +19998,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -20339,7 +20339,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK23-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -20358,7 +20358,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -20698,7 +20698,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK24-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -20717,7 +20717,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -24267,7 +24267,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -24286,7 +24286,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -24629,7 +24629,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -24648,7 +24648,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -24989,7 +24989,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25008,7 +25008,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -25348,7 +25348,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25367,7 +25367,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -1295,7 +1295,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1314,7 +1314,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2884,7 +2884,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -2903,7 +2903,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4443,7 +4443,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4462,7 +4462,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5990,7 +5990,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6009,7 +6009,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7567,7 +7567,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7586,7 +7586,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9270,7 +9270,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -9289,7 +9289,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -10943,7 +10943,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -10962,7 +10962,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12604,7 +12604,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12623,7 +12623,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -13611,7 +13611,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK9-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK9-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK9-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK9-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK9-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -13630,7 +13630,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK9-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14101,7 +14101,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK10-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK10-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK10-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK10-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK10-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14120,7 +14120,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK10-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14589,7 +14589,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK11-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK11-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK11-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK11-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14608,7 +14608,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK11-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15076,7 +15076,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK12-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK12-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK12-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK12-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK12-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15095,7 +15095,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK12-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15565,7 +15565,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15584,7 +15584,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -16102,7 +16102,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -16121,7 +16121,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -16637,7 +16637,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -16656,7 +16656,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -17171,7 +17171,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -17190,7 +17190,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -24679,7 +24679,7 @@ int bar(int n){
|
|||
// CHECK25-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK25-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK25-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK25-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK25-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK25-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK25-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK25-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -24698,7 +24698,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK25-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK25-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK25-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -25169,7 +25169,7 @@ int bar(int n){
|
|||
// CHECK26-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK26-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK26-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK26-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK26-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK26-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK26-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK26-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25188,7 +25188,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK26-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK26-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK26-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -25657,7 +25657,7 @@ int bar(int n){
|
|||
// CHECK27-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK27-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK27-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK27-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK27-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK27-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK27-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK27-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25676,7 +25676,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK27-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK27-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK27-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -26144,7 +26144,7 @@ int bar(int n){
|
|||
// CHECK28-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK28-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK28-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK28-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK28-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK28-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK28-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK28-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -26163,7 +26163,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK28-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK28-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK28-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -26633,7 +26633,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -26652,7 +26652,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -27170,7 +27170,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -27189,7 +27189,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -27705,7 +27705,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -27724,7 +27724,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -28239,7 +28239,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -28258,7 +28258,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -191,7 +191,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -210,7 +210,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -735,7 +735,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -754,7 +754,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1279,7 +1279,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1298,7 +1298,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1811,7 +1811,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1830,7 +1830,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2343,7 +2343,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2362,7 +2362,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2439,7 +2439,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2458,7 +2458,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2535,7 +2535,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2554,7 +2554,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2631,7 +2631,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2650,7 +2650,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3657,7 +3657,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3676,7 +3676,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3753,7 +3753,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3772,7 +3772,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3849,7 +3849,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3868,7 +3868,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3945,7 +3945,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3964,7 +3964,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4041,7 +4041,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4060,7 +4060,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4585,7 +4585,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4604,7 +4604,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5129,7 +5129,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5148,7 +5148,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5661,7 +5661,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5680,7 +5680,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6193,7 +6193,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6212,7 +6212,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6289,7 +6289,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6308,7 +6308,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6385,7 +6385,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6404,7 +6404,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6481,7 +6481,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6500,7 +6500,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7507,7 +7507,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -7526,7 +7526,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7603,7 +7603,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -7622,7 +7622,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7699,7 +7699,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -7718,7 +7718,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7795,7 +7795,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -7814,7 +7814,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -198,7 +198,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -217,7 +217,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -655,7 +655,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -674,7 +674,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1112,7 +1112,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1131,7 +1131,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1555,7 +1555,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1574,7 +1574,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1998,7 +1998,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2017,7 +2017,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2091,7 +2091,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2110,7 +2110,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2184,7 +2184,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2203,7 +2203,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2277,7 +2277,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2296,7 +2296,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3104,7 +3104,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3123,7 +3123,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3197,7 +3197,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3216,7 +3216,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3290,7 +3290,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3309,7 +3309,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3383,7 +3383,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3402,7 +3402,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3476,7 +3476,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3495,7 +3495,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3933,7 +3933,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3952,7 +3952,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4390,7 +4390,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4409,7 +4409,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4833,7 +4833,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4852,7 +4852,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5276,7 +5276,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5295,7 +5295,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5369,7 +5369,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5388,7 +5388,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5462,7 +5462,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5481,7 +5481,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5555,7 +5555,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5574,7 +5574,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6382,7 +6382,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6401,7 +6401,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6475,7 +6475,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6494,7 +6494,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6568,7 +6568,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6587,7 +6587,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6661,7 +6661,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6680,7 +6680,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -1197,7 +1197,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1216,7 +1216,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2580,7 +2580,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -2599,7 +2599,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3934,7 +3934,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -3953,7 +3953,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5276,7 +5276,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -5295,7 +5295,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5871,7 +5871,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -5890,7 +5890,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6114,7 +6114,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6133,7 +6133,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6354,7 +6354,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6373,7 +6373,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6593,7 +6593,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6612,7 +6612,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -8941,7 +8941,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8960,7 +8960,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9184,7 +9184,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -9203,7 +9203,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9424,7 +9424,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -9443,7 +9443,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9663,7 +9663,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -9682,7 +9682,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -10681,7 +10681,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK17-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -10700,7 +10700,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12064,7 +12064,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK18-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12083,7 +12083,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -13418,7 +13418,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK19-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -13437,7 +13437,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14760,7 +14760,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK20-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14779,7 +14779,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15355,7 +15355,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK21-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15374,7 +15374,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15598,7 +15598,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK22-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15617,7 +15617,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15838,7 +15838,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK23-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15857,7 +15857,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -16077,7 +16077,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK24-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -16096,7 +16096,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -18425,7 +18425,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -18444,7 +18444,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -18668,7 +18668,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -18687,7 +18687,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -18908,7 +18908,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -18927,7 +18927,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -19147,7 +19147,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -19166,7 +19166,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -1296,7 +1296,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1315,7 +1315,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3016,7 +3016,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -3035,7 +3035,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4714,7 +4714,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4733,7 +4733,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6396,7 +6396,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6415,7 +6415,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7280,7 +7280,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7299,7 +7299,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7633,7 +7633,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -7652,7 +7652,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -7984,7 +7984,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8003,7 +8003,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -8334,7 +8334,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8353,7 +8353,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12032,7 +12032,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12051,7 +12051,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12385,7 +12385,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12404,7 +12404,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -12736,7 +12736,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -12755,7 +12755,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -13086,7 +13086,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -13105,7 +13105,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14258,7 +14258,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK17-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK17-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14277,7 +14277,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15978,7 +15978,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK18-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK18-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15997,7 +15997,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -17676,7 +17676,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK19-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK19-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -17695,7 +17695,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -19358,7 +19358,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK20-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK20-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -19377,7 +19377,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -20242,7 +20242,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK21-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK21-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -20261,7 +20261,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -20595,7 +20595,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK22-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK22-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -20614,7 +20614,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -20946,7 +20946,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK23-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK23-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -20965,7 +20965,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -21296,7 +21296,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK24-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK24-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -21315,7 +21315,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -24994,7 +24994,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25013,7 +25013,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -25347,7 +25347,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25366,7 +25366,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -25698,7 +25698,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -25717,7 +25717,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -26048,7 +26048,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -26067,7 +26067,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -98,12 +98,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -242,12 +242,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -386,12 +386,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -528,12 +528,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -670,12 +670,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -730,12 +730,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -790,12 +790,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -848,12 +848,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -126,12 +126,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -473,12 +473,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -820,12 +820,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1164,12 +1164,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1508,12 +1508,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1588,12 +1588,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1668,12 +1668,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1745,12 +1745,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -103,12 +103,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -322,12 +322,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -541,12 +541,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -754,12 +754,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -967,12 +967,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1027,12 +1027,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1087,12 +1087,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1145,12 +1145,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -138,12 +138,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -707,12 +707,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -1276,12 +1276,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1830,12 +1830,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -2384,12 +2384,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -2464,12 +2464,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -2544,12 +2544,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -2621,12 +2621,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2332,7 +2332,7 @@ int main() {
|
|||
// CHECK5-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK5-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2501,7 +2501,7 @@ int main() {
|
|||
// CHECK5-NEXT: store i32 [[ADD4]], i32* [[SIVAR2]], align 4
|
||||
// CHECK5-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32* [[SIVAR2]], i32** [[TMP13]], align 8
|
||||
// CHECK5-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK5-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK5: omp.body.continue:
|
||||
// CHECK5-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2599,7 +2599,7 @@ int main() {
|
|||
// CHECK6-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK6-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2768,7 +2768,7 @@ int main() {
|
|||
// CHECK6-NEXT: store i32 [[ADD4]], i32* [[SIVAR2]], align 4
|
||||
// CHECK6-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32* [[SIVAR2]], i32** [[TMP13]], align 8
|
||||
// CHECK6-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK6-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK6: omp.body.continue:
|
||||
// CHECK6-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3098,7 +3098,7 @@ int main() {
|
|||
// CHECK11-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK11-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -3108,6 +3108,6 @@ int main() {
|
|||
// CHECK12-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK12-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
//
|
||||
|
|
|
@ -198,12 +198,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -1113,12 +1113,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -2028,12 +2028,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -2915,12 +2915,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -3802,12 +3802,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -4717,12 +4717,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -5632,12 +5632,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -6519,12 +6519,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -7406,12 +7406,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK9-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK9-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK9-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK9-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK9-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -7526,12 +7526,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK10-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK10-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK10-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK10-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK10-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -7646,12 +7646,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK11-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK11-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK11-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK11-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK11-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -7761,12 +7761,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK12-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK12-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK12-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK12-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK12-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -103,12 +103,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -338,12 +338,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -573,12 +573,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -802,12 +802,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1031,12 +1031,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1102,12 +1102,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1173,12 +1173,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1242,12 +1242,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -138,12 +138,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -749,12 +749,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -1360,12 +1360,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1956,12 +1956,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -2552,12 +2552,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -2677,12 +2677,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -2802,12 +2802,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -2924,12 +2924,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2444,7 +2444,7 @@ int main() {
|
|||
// CHECK5-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK5-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK5-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK5-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2620,7 +2620,7 @@ int main() {
|
|||
// CHECK5-NEXT: store i32 [[ADD4]], i32* [[SIVAR2]], align 4
|
||||
// CHECK5-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32* [[SIVAR2]], i32** [[TMP13]], align 8
|
||||
// CHECK5-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK5-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK5: omp.body.continue:
|
||||
// CHECK5-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2725,7 +2725,7 @@ int main() {
|
|||
// CHECK6-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK6-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK6-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK6-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2901,7 +2901,7 @@ int main() {
|
|||
// CHECK6-NEXT: store i32 [[ADD4]], i32* [[SIVAR2]], align 4
|
||||
// CHECK6-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32* [[SIVAR2]], i32** [[TMP13]], align 8
|
||||
// CHECK6-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK6-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK6: omp.body.continue:
|
||||
// CHECK6-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -3406,7 +3406,7 @@ int main() {
|
|||
// CHECK11-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK11-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -3416,6 +3416,6 @@ int main() {
|
|||
// CHECK12-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK12-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
//
|
||||
|
|
|
@ -198,12 +198,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -1183,12 +1183,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -2168,12 +2168,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -3125,12 +3125,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -4082,12 +4082,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -5067,12 +5067,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -6052,12 +6052,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -7009,12 +7009,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -7966,12 +7966,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK9-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK9-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK9-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK9-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -8161,12 +8161,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK10-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK10-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK10-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK10-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -8356,12 +8356,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK11-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK11-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK11-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK11-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -8546,12 +8546,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK12-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK12-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK12-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK12-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1608,7 +1608,7 @@ int main() {
|
|||
// CHECK9-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK9-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK9-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1680,7 +1680,7 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1755,7 +1755,7 @@ int main() {
|
|||
// CHECK10-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK10-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK10-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1827,7 +1827,7 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1902,7 +1902,7 @@ int main() {
|
|||
// CHECK11-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK11-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1912,6 +1912,6 @@ int main() {
|
|||
// CHECK12-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK12-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
//
|
||||
|
|
|
@ -1284,7 +1284,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -1303,7 +1303,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3023,7 +3023,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK2-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -3042,7 +3042,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4744,7 +4744,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK3-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -4763,7 +4763,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6449,7 +6449,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK4-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -6468,7 +6468,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -8172,7 +8172,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK5-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -8191,7 +8191,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -9988,7 +9988,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK6-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -10007,7 +10007,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -11786,7 +11786,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK7-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -11805,7 +11805,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -13568,7 +13568,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK8-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -13587,7 +13587,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -14637,7 +14637,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK9-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK9-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK9-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK9-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK9-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -14656,7 +14656,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK9-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15148,7 +15148,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK10-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK10-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK10-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK10-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK10-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15167,7 +15167,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK10-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -15657,7 +15657,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK11-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK11-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK11-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK11-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -15676,7 +15676,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK11-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -16165,7 +16165,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK12-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK12-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK12-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK12-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK12-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -16184,7 +16184,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK12-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -16675,7 +16675,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK13-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -16694,7 +16694,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -17233,7 +17233,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK14-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -17252,7 +17252,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -17789,7 +17789,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK15-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -17808,7 +17808,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -18344,7 +18344,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK16-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -18363,7 +18363,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -26073,7 +26073,7 @@ int bar(int n){
|
|||
// CHECK25-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK25-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK25-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK25-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK25-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK25-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK25-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK25-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -26092,7 +26092,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK25-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK25-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK25-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -26584,7 +26584,7 @@ int bar(int n){
|
|||
// CHECK26-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK26-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK26-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK26-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK26-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK26-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK26-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK26-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -26603,7 +26603,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK26-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK26-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK26-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -27093,7 +27093,7 @@ int bar(int n){
|
|||
// CHECK27-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK27-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK27-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK27-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK27-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK27-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK27-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK27-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -27112,7 +27112,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK27-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK27-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK27-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -27601,7 +27601,7 @@ int bar(int n){
|
|||
// CHECK28-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK28-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK28-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK28-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK28-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK28-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK28-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK28-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -27620,7 +27620,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK28-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK28-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK28-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -28111,7 +28111,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK29-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK29-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -28130,7 +28130,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -28669,7 +28669,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[CALL1:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP2]])
|
||||
// CHECK30-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK30-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -28688,7 +28688,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -29225,7 +29225,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK31-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK31-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -29244,7 +29244,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -29780,7 +29780,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[CALL1:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP2]])
|
||||
// CHECK32-NEXT: [[TMP3:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD2:%.*]] = add nsw i32 [[TMP3]], [[CALL1]]
|
||||
// CHECK32-NEXT: store i32 [[ADD2]], i32* [[A]], align 4
|
||||
|
@ -29799,7 +29799,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -98,12 +98,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -250,12 +250,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -402,12 +402,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -552,12 +552,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -702,12 +702,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -773,12 +773,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -844,12 +844,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -913,12 +913,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -126,12 +126,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -494,12 +494,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -862,12 +862,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1227,12 +1227,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1592,12 +1592,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1717,12 +1717,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1842,12 +1842,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
@ -1964,12 +1964,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[TMP:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1832,7 +1832,7 @@ int main() {
|
|||
// CHECK9-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK9-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK9-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK9-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -1904,7 +1904,7 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -1986,7 +1986,7 @@ int main() {
|
|||
// CHECK10-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK10-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK10-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK10-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2058,7 +2058,7 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
|
@ -2140,7 +2140,7 @@ int main() {
|
|||
// CHECK11-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK11-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
//
|
||||
//
|
||||
|
@ -2150,6 +2150,6 @@ int main() {
|
|||
// CHECK12-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[REF_TMP:%.*]] = alloca [[CLASS_ANON:%.*]], align 1
|
||||
// CHECK12-NEXT: store i32 0, i32* [[RETVAL]], align 4
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: call void @"_ZZ4mainENK3$_0clEv"(%class.anon* nonnull align 1 dereferenceable(1) [[REF_TMP]])
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
//
|
||||
|
|
|
@ -183,7 +183,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -202,7 +202,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -640,7 +640,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -659,7 +659,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1097,7 +1097,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1116,7 +1116,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1540,7 +1540,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1559,7 +1559,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1983,7 +1983,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2002,7 +2002,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2076,7 +2076,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2095,7 +2095,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2169,7 +2169,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2188,7 +2188,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2262,7 +2262,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2281,7 +2281,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3089,7 +3089,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3108,7 +3108,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3182,7 +3182,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3201,7 +3201,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3275,7 +3275,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3294,7 +3294,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3368,7 +3368,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3387,7 +3387,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3461,7 +3461,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3480,7 +3480,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3918,7 +3918,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3937,7 +3937,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4375,7 +4375,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4394,7 +4394,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4818,7 +4818,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4837,7 +4837,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5261,7 +5261,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5280,7 +5280,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5354,7 +5354,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5373,7 +5373,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5447,7 +5447,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5466,7 +5466,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5540,7 +5540,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5559,7 +5559,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6367,7 +6367,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6386,7 +6386,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6460,7 +6460,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6479,7 +6479,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6553,7 +6553,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6572,7 +6572,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6646,7 +6646,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6665,7 +6665,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -183,7 +183,7 @@ int bar(int n){
|
|||
// CHECK1-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -202,7 +202,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -662,7 +662,7 @@ int bar(int n){
|
|||
// CHECK2-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -681,7 +681,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1141,7 +1141,7 @@ int bar(int n){
|
|||
// CHECK3-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1160,7 +1160,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1604,7 +1604,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -1623,7 +1623,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2067,7 +2067,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK5-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2086,7 +2086,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2164,7 +2164,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK6-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK6-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2183,7 +2183,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2261,7 +2261,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK7-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK7-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2280,7 +2280,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK7-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK7-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2358,7 +2358,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK8-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK8-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -2377,7 +2377,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK8-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK8-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3203,7 +3203,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK13-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK13-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK13-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3222,7 +3222,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK13-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK13-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK13-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3300,7 +3300,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK14-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK14-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK14-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3319,7 +3319,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK14-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK14-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK14-NEXT: entry:
|
||||
// CHECK14-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK14-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3397,7 +3397,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK15-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK15-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK15-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3416,7 +3416,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK15-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK15-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK15-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3494,7 +3494,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK16-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK16-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK16-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3513,7 +3513,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK16-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK16-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK16-NEXT: entry:
|
||||
// CHECK16-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK16-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3591,7 +3591,7 @@ int bar(int n){
|
|||
// CHECK17-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK17-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK17-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK17-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -3610,7 +3610,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK17-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4070,7 +4070,7 @@ int bar(int n){
|
|||
// CHECK18-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK18-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK18-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK18-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4089,7 +4089,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK18-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4549,7 +4549,7 @@ int bar(int n){
|
|||
// CHECK19-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK19-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK19-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK19-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -4568,7 +4568,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK19-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5012,7 +5012,7 @@ int bar(int n){
|
|||
// CHECK20-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK20-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK20-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK20-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5031,7 +5031,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK20-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5475,7 +5475,7 @@ int bar(int n){
|
|||
// CHECK21-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK21-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK21-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK21-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5494,7 +5494,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK21-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK21-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5572,7 +5572,7 @@ int bar(int n){
|
|||
// CHECK22-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK22-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK22-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK22-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5591,7 +5591,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK22-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK22-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5669,7 +5669,7 @@ int bar(int n){
|
|||
// CHECK23-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK23-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK23-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK23-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5688,7 +5688,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK23-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK23-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5766,7 +5766,7 @@ int bar(int n){
|
|||
// CHECK24-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK24-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK24-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK24-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -5785,7 +5785,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK24-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK24-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6611,7 +6611,7 @@ int bar(int n){
|
|||
// CHECK29-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK29-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK29-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK29-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6630,7 +6630,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK29-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK29-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK29-NEXT: entry:
|
||||
// CHECK29-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK29-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6708,7 +6708,7 @@ int bar(int n){
|
|||
// CHECK30-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 8 dereferenceable(8) [[S]], i32 signext [[TMP0]])
|
||||
// CHECK30-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK30-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK30-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6727,7 +6727,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK30-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK30-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-SAME: (%struct.S1* nonnull align 8 dereferenceable(8) [[THIS:%.*]], i32 signext [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK30-NEXT: entry:
|
||||
// CHECK30-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK30-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6805,7 +6805,7 @@ int bar(int n){
|
|||
// CHECK31-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK31-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK31-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK31-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6824,7 +6824,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK31-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK31-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK31-NEXT: entry:
|
||||
// CHECK31-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK31-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -6902,7 +6902,7 @@ int bar(int n){
|
|||
// CHECK32-NEXT: store i32 [[N]], i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: store i32 0, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[TMP0:%.*]] = load i32, i32* [[N_ADDR]], align 4
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[CALL:%.*]] = call i32 @_ZN2S12r1Ei(%struct.S1* nonnull align 4 dereferenceable(8) [[S]], i32 [[TMP0]])
|
||||
// CHECK32-NEXT: [[TMP1:%.*]] = load i32, i32* [[A]], align 4
|
||||
// CHECK32-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[CALL]]
|
||||
// CHECK32-NEXT: store i32 [[ADD]], i32* [[A]], align 4
|
||||
|
@ -6921,7 +6921,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK32-LABEL: define {{[^@]+}}@_ZN2S12r1Ei
|
||||
// CHECK32-SAME: (%struct.S1* nonnull dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-SAME: (%struct.S1* nonnull align 4 dereferenceable(8) [[THIS:%.*]], i32 [[N:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK32-NEXT: entry:
|
||||
// CHECK32-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK32-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -186,7 +186,7 @@ void xxxx() {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -443,7 +443,7 @@ void xxxx() {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP170]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN32]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE33:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done33:
|
||||
|
@ -452,12 +452,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -938,12 +938,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1039,7 +1039,7 @@ void xxxx() {
|
|||
// CHECK1-NEXT: [[TMP25:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP23]], i8* [[TMP24]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT:%.*]]
|
||||
// CHECK1: .untied.jmp.2.i:
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[TMP26:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
// CHECK1-NEXT: [[DOTS2__VOID_ADDR_I:%.*]] = call i8* @__kmpc_alloc(i32 [[TMP26]], i64 4, i8* inttoptr (i64 7 to i8*)) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[DOTS2__ADDR_I:%.*]] = bitcast i8* [[DOTS2__VOID_ADDR_I]] to %struct.S*
|
||||
|
@ -1051,7 +1051,7 @@ void xxxx() {
|
|||
// CHECK1-NEXT: [[TMP30:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP28]], i8* [[TMP29]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK1: .untied.jmp.3.i:
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[A_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store i32 0, i32* [[A_I]], align 4
|
||||
// CHECK1-NEXT: [[TMP31:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
|
@ -1080,11 +1080,11 @@ void xxxx() {
|
|||
// CHECK1-NEXT: [[TMP49:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP47]], i8* [[TMP48]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK1: .untied.jmp.7.i:
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[TMP50:%.*]] = bitcast %struct.S* [[TMP17]] to i8*
|
||||
// CHECK1-NEXT: [[TMP51:%.*]] = bitcast %struct.S* [[REF_TMP_I]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP50]], i8* align 4 [[TMP51]], i64 4, i1 false) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[A9_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store i32 10, i32* [[A9_I]], align 4
|
||||
// CHECK1-NEXT: [[TMP52:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
|
@ -1096,11 +1096,11 @@ void xxxx() {
|
|||
// CHECK1-NEXT: [[TMP57:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP55]], i8* [[TMP56]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK1: .untied.jmp.10.i:
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[TMP58:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
// CHECK1-NEXT: [[TMP59:%.*]] = bitcast %struct.S* [[TMP19]] to i8*
|
||||
// CHECK1-NEXT: call void @__kmpc_free(i32 [[TMP58]], i8* [[TMP59]], i8* inttoptr (i64 7 to i8*)) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: store i32 0, i32* [[CLEANUP_DEST_SLOT_I]], align 4, !noalias !111
|
||||
// CHECK1-NEXT: br label [[CLEANUP_I]]
|
||||
// CHECK1: cleanup.i:
|
||||
|
@ -1111,7 +1111,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1122,7 +1122,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1133,32 +1133,32 @@ void xxxx() {
|
|||
// CHECK1-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK1-SAME: () #[[ATTR7]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK1-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK1-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON_21:%.*]], align 8
|
||||
|
@ -1378,7 +1378,7 @@ void xxxx() {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1635,7 +1635,7 @@ void xxxx() {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP170]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN32]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE33:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done33:
|
||||
|
@ -1644,12 +1644,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2130,12 +2130,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -2231,7 +2231,7 @@ void xxxx() {
|
|||
// CHECK2-NEXT: [[TMP25:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP23]], i8* [[TMP24]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT:%.*]]
|
||||
// CHECK2: .untied.jmp.2.i:
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[TMP26:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
// CHECK2-NEXT: [[DOTS2__VOID_ADDR_I:%.*]] = call i8* @__kmpc_alloc(i32 [[TMP26]], i64 4, i8* inttoptr (i64 7 to i8*)) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[DOTS2__ADDR_I:%.*]] = bitcast i8* [[DOTS2__VOID_ADDR_I]] to %struct.S*
|
||||
|
@ -2243,7 +2243,7 @@ void xxxx() {
|
|||
// CHECK2-NEXT: [[TMP30:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP28]], i8* [[TMP29]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK2: .untied.jmp.3.i:
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[A_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store i32 0, i32* [[A_I]], align 4
|
||||
// CHECK2-NEXT: [[TMP31:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
|
@ -2272,11 +2272,11 @@ void xxxx() {
|
|||
// CHECK2-NEXT: [[TMP49:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP47]], i8* [[TMP48]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK2: .untied.jmp.7.i:
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[TMP50:%.*]] = bitcast %struct.S* [[TMP17]] to i8*
|
||||
// CHECK2-NEXT: [[TMP51:%.*]] = bitcast %struct.S* [[REF_TMP_I]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP50]], i8* align 4 [[TMP51]], i64 4, i1 false) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[A9_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0, i32 0
|
||||
// CHECK2-NEXT: store i32 10, i32* [[A9_I]], align 4
|
||||
// CHECK2-NEXT: [[TMP52:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
|
@ -2288,11 +2288,11 @@ void xxxx() {
|
|||
// CHECK2-NEXT: [[TMP57:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[TMP55]], i8* [[TMP56]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK2: .untied.jmp.10.i:
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP19]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: [[TMP58:%.*]] = load i32, i32* [[DOTGLOBAL_TID__ADDR_I]], align 4, !noalias !111
|
||||
// CHECK2-NEXT: [[TMP59:%.*]] = bitcast %struct.S* [[TMP19]] to i8*
|
||||
// CHECK2-NEXT: call void @__kmpc_free(i32 [[TMP58]], i8* [[TMP59]], i8* inttoptr (i64 7 to i8*)) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[TMP17]]) #[[ATTR4]]
|
||||
// CHECK2-NEXT: store i32 0, i32* [[CLEANUP_DEST_SLOT_I]], align 4, !noalias !111
|
||||
// CHECK2-NEXT: br label [[CLEANUP_I]]
|
||||
// CHECK2: cleanup.i:
|
||||
|
@ -2303,7 +2303,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -2314,7 +2314,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -2325,32 +2325,32 @@ void xxxx() {
|
|||
// CHECK2-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK2-SAME: () #[[ATTR7]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK2-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK2-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON_21:%.*]], align 8
|
||||
|
@ -2569,7 +2569,7 @@ void xxxx() {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -2846,7 +2846,7 @@ void xxxx() {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP169]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN51]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE52:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done52:
|
||||
|
@ -2855,12 +2855,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -3341,12 +3341,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -3442,8 +3442,8 @@ void xxxx() {
|
|||
// CHECK3-NEXT: [[TMP23:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM_I]], i8* [[TMP22]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT:%.*]]
|
||||
// CHECK3: .untied.jmp.2.i:
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: [[A_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2_I]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store i32 0, i32* [[A_I]], align 4, !noalias !111
|
||||
// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM3_I:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB23:[0-9]+]]) #[[ATTR4]]
|
||||
|
@ -3472,11 +3472,11 @@ void xxxx() {
|
|||
// CHECK3-NEXT: [[TMP37:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM9_I]], i8* [[TMP36]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK3: .untied.jmp.10.i:
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: [[TMP38:%.*]] = bitcast %struct.S* [[S1_I]] to i8*
|
||||
// CHECK3-NEXT: [[TMP39:%.*]] = bitcast %struct.S* [[REF_TMP_I]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP38]], i8* align 4 [[TMP39]], i64 4, i1 false) #[[ATTR4]], !noalias !111
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: [[A12_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2_I]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store i32 10, i32* [[A12_I]], align 4, !noalias !111
|
||||
// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM13_I:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]]) #[[ATTR4]]
|
||||
|
@ -3488,8 +3488,8 @@ void xxxx() {
|
|||
// CHECK3-NEXT: [[TMP43:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM14_I]], i8* [[TMP42]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK3: .untied.jmp.15.i:
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK3-NEXT: store i32 0, i32* [[CLEANUP_DEST_SLOT_I]], align 4, !noalias !111
|
||||
// CHECK3-NEXT: br label [[CLEANUP_I]]
|
||||
// CHECK3: cleanup.i:
|
||||
|
@ -3500,7 +3500,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -3511,7 +3511,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -3522,32 +3522,32 @@ void xxxx() {
|
|||
// CHECK3-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK3-SAME: () #[[ATTR7]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK3-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK3-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK3-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK3-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK3-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON_21:%.*]], align 8
|
||||
|
@ -3648,7 +3648,7 @@ void xxxx() {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -3925,7 +3925,7 @@ void xxxx() {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP169]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN51]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE52:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done52:
|
||||
|
@ -3934,12 +3934,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -4420,12 +4420,12 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -4521,8 +4521,8 @@ void xxxx() {
|
|||
// CHECK4-NEXT: [[TMP23:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM_I]], i8* [[TMP22]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT:%.*]]
|
||||
// CHECK4: .untied.jmp.2.i:
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: [[A_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2_I]], i32 0, i32 0
|
||||
// CHECK4-NEXT: store i32 0, i32* [[A_I]], align 4, !noalias !111
|
||||
// CHECK4-NEXT: [[OMP_GLOBAL_THREAD_NUM3_I:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB23:[0-9]+]]) #[[ATTR4]]
|
||||
|
@ -4551,11 +4551,11 @@ void xxxx() {
|
|||
// CHECK4-NEXT: [[TMP37:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM9_I]], i8* [[TMP36]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK4: .untied.jmp.10.i:
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: [[TMP38:%.*]] = bitcast %struct.S* [[S1_I]] to i8*
|
||||
// CHECK4-NEXT: [[TMP39:%.*]] = bitcast %struct.S* [[REF_TMP_I]] to i8*
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP38]], i8* align 4 [[TMP39]], i64 4, i1 false) #[[ATTR4]], !noalias !111
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: [[A12_I:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2_I]], i32 0, i32 0
|
||||
// CHECK4-NEXT: store i32 10, i32* [[A12_I]], align 4, !noalias !111
|
||||
// CHECK4-NEXT: [[OMP_GLOBAL_THREAD_NUM13_I:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]]) #[[ATTR4]]
|
||||
|
@ -4567,8 +4567,8 @@ void xxxx() {
|
|||
// CHECK4-NEXT: [[TMP43:%.*]] = call i32 @__kmpc_omp_task(%struct.ident_t* @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM14_I]], i8* [[TMP42]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_OUTLINED__17_EXIT]]
|
||||
// CHECK4: .untied.jmp.15.i:
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1_I]]) #[[ATTR4]]
|
||||
// CHECK4-NEXT: store i32 0, i32* [[CLEANUP_DEST_SLOT_I]], align 4, !noalias !111
|
||||
// CHECK4-NEXT: br label [[CLEANUP_I]]
|
||||
// CHECK4: cleanup.i:
|
||||
|
@ -4579,7 +4579,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -4590,7 +4590,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -4601,32 +4601,32 @@ void xxxx() {
|
|||
// CHECK4-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK4-SAME: () #[[ATTR7]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK4-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK4-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK4-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK4-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR8:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK4-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON_21:%.*]], align 8
|
||||
|
@ -4712,7 +4712,7 @@ void xxxx() {
|
|||
// CHECK5-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK5: arrayctor.loop:
|
||||
// CHECK5-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK5-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK5-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK5-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -4744,21 +4744,21 @@ void xxxx() {
|
|||
// CHECK5-NEXT: store i32 3, i32* @a, align 4
|
||||
// CHECK5-NEXT: store i32 4, i32* @a, align 4
|
||||
// CHECK5-NEXT: store i32 5, i32* [[C]], align 128
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S2]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2]])
|
||||
// CHECK5-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32 0, i32* [[A3]], align 4
|
||||
// CHECK5-NEXT: store i32 4, i32* [[C]], align 128
|
||||
// CHECK5-NEXT: store i32 4, i32* @a, align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK5-NEXT: [[TMP5:%.*]] = bitcast %struct.S* [[S1]] to i8*
|
||||
// CHECK5-NEXT: [[TMP6:%.*]] = bitcast %struct.S* [[REF_TMP]] to i8*
|
||||
// CHECK5-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP5]], i8* align 4 [[TMP6]], i64 4, i1 false)
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR6:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR6:[0-9]+]]
|
||||
// CHECK5-NEXT: [[A4:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2]], i32 0, i32 0
|
||||
// CHECK5-NEXT: store i32 10, i32* [[A4]], align 4
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S2]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S1]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: [[TMP7:%.*]] = load i32, i32* @a, align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP7]], i32* [[RETVAL]], align 4
|
||||
// CHECK5-NEXT: [[TMP8:%.*]] = load i8*, i8** [[SAVED_STACK]], align 8
|
||||
|
@ -4769,7 +4769,7 @@ void xxxx() {
|
|||
// CHECK5: arraydestroy.body:
|
||||
// CHECK5-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK5-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN5]]
|
||||
// CHECK5-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE6:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK5: arraydestroy.done6:
|
||||
|
@ -4778,44 +4778,44 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR6]]
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK5-SAME: () #[[ATTR4:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK5-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -4826,7 +4826,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK5-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK5-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -4835,17 +4835,17 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK5-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK5-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR5:[0-9]+]] align 2 {
|
||||
// CHECK5-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR5:[0-9]+]] align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK5-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
|
@ -4881,7 +4881,7 @@ void xxxx() {
|
|||
// CHECK6-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK6: arrayctor.loop:
|
||||
// CHECK6-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK6-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK6-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK6-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -4913,21 +4913,21 @@ void xxxx() {
|
|||
// CHECK6-NEXT: store i32 3, i32* @a, align 4
|
||||
// CHECK6-NEXT: store i32 4, i32* @a, align 4
|
||||
// CHECK6-NEXT: store i32 5, i32* [[C]], align 128
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[S2]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2]])
|
||||
// CHECK6-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32 0, i32* [[A3]], align 4
|
||||
// CHECK6-NEXT: store i32 4, i32* [[C]], align 128
|
||||
// CHECK6-NEXT: store i32 4, i32* @a, align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK6-NEXT: [[TMP5:%.*]] = bitcast %struct.S* [[S1]] to i8*
|
||||
// CHECK6-NEXT: [[TMP6:%.*]] = bitcast %struct.S* [[REF_TMP]] to i8*
|
||||
// CHECK6-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP5]], i8* align 4 [[TMP6]], i64 4, i1 false)
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR6:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR6:[0-9]+]]
|
||||
// CHECK6-NEXT: [[A4:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[S2]], i32 0, i32 0
|
||||
// CHECK6-NEXT: store i32 10, i32* [[A4]], align 4
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S2]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[S1]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S2]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[S1]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: [[TMP7:%.*]] = load i32, i32* @a, align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP7]], i32* [[RETVAL]], align 4
|
||||
// CHECK6-NEXT: [[TMP8:%.*]] = load i8*, i8** [[SAVED_STACK]], align 8
|
||||
|
@ -4938,7 +4938,7 @@ void xxxx() {
|
|||
// CHECK6: arraydestroy.body:
|
||||
// CHECK6-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK6-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN5]]
|
||||
// CHECK6-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE6:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK6: arraydestroy.done6:
|
||||
|
@ -4947,44 +4947,44 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR6]]
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__cxx_global_var_init
|
||||
// CHECK6-SAME: () #[[ATTR4:[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull dereferenceable(4) @s1)
|
||||
// CHECK6-NEXT: call void @_ZN2S1C1Ev(%struct.S1* nonnull align 4 dereferenceable(4) @s1)
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S1C1Ev
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN2S1C2Ev(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -4995,7 +4995,7 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK6-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK6-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -5004,17 +5004,17 @@ void xxxx() {
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S1C2Ev
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: [[THIS1:%.*]] = load %struct.S1*, %struct.S1** [[THIS_ADDR]], align 8
|
||||
// CHECK6-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: call void @_ZN2S18taskinitEv(%struct.S1* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2S18taskinitEv
|
||||
// CHECK6-SAME: (%struct.S1* nonnull dereferenceable(4) [[THIS:%.*]]) #[[ATTR5:[0-9]+]] align 2 {
|
||||
// CHECK6-SAME: (%struct.S1* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) #[[ATTR5:[0-9]+]] align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK6-NEXT: store %struct.S1* [[THIS]], %struct.S1** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -78,7 +78,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -210,7 +210,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP68]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done8:
|
||||
|
@ -219,12 +219,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -336,7 +336,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK1: omp.arrayinit.body:
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -357,7 +357,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done1:
|
||||
|
@ -365,12 +365,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -393,8 +393,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -414,12 +414,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -681,7 +681,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -692,7 +692,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -701,7 +701,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -709,12 +709,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -749,7 +749,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -881,7 +881,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP68]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done8:
|
||||
|
@ -890,12 +890,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1007,7 +1007,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK2: omp.arrayinit.body:
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK2-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -1028,7 +1028,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done1:
|
||||
|
@ -1036,12 +1036,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1064,8 +1064,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -1085,12 +1085,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1352,7 +1352,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1363,7 +1363,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1372,7 +1372,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1380,12 +1380,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1416,7 +1416,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1447,7 +1447,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP8]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done3:
|
||||
|
@ -1456,27 +1456,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1487,7 +1487,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1516,7 +1516,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1547,7 +1547,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP8]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done3:
|
||||
|
@ -1556,27 +1556,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1587,7 +1587,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -64,7 +64,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -186,7 +186,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done8:
|
||||
|
@ -195,12 +195,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -312,7 +312,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK1: omp.arrayinit.body:
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -333,7 +333,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done1:
|
||||
|
@ -341,12 +341,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -369,8 +369,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -390,12 +390,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -667,7 +667,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -678,7 +678,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -687,7 +687,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -695,12 +695,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -734,7 +734,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -856,7 +856,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done8:
|
||||
|
@ -865,12 +865,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -982,7 +982,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK2: omp.arrayinit.body:
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK2-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -1003,7 +1003,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done1:
|
||||
|
@ -1011,12 +1011,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1039,8 +1039,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -1060,12 +1060,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1337,7 +1337,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1348,7 +1348,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1357,7 +1357,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1365,12 +1365,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1402,7 +1402,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1444,7 +1444,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done3:
|
||||
|
@ -1453,27 +1453,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1484,7 +1484,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1514,7 +1514,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1556,7 +1556,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP9]], [[FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN2]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE3:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done3:
|
||||
|
@ -1565,27 +1565,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1596,7 +1596,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -64,7 +64,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK1: arrayctor.loop:
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -186,7 +186,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done8:
|
||||
|
@ -195,12 +195,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -312,7 +312,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK1: omp.arrayinit.body:
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -333,7 +333,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK1: arraydestroy.body:
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK1-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK1: arraydestroy.done1:
|
||||
|
@ -341,12 +341,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -369,8 +369,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK1-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK1-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -390,12 +390,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -667,7 +667,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -678,7 +678,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -687,7 +687,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -695,12 +695,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK1-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK1-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -734,7 +734,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK2: arrayctor.loop:
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK2-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -856,7 +856,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP60]], [[ARRAYCTOR_CONT]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN7]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE8:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done8:
|
||||
|
@ -865,12 +865,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -982,7 +982,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]]
|
||||
// CHECK2: omp.arrayinit.body:
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]]
|
||||
// CHECK2-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]]
|
||||
|
@ -1003,7 +1003,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK2: arraydestroy.body:
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY:%.*]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN]]
|
||||
// CHECK2-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE1:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK2: arraydestroy.done1:
|
||||
|
@ -1011,12 +1011,12 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -1039,8 +1039,8 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRCELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP5]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_SRC_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP3]], [[ENTRY]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYCPY_BODY]] ]
|
||||
// CHECK2-NEXT: call void @_ZplRK1SS1_(%struct.S* sret([[STRUCT_S]]) align 4 [[REF_TMP]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_SRCELEMENTPAST]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(4) %struct.S* @_ZN1SaSERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]], %struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]])
|
||||
// CHECK2-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[REF_TMP]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_SRC_ELEMENT]] = getelementptr [[STRUCT_S]], %struct.S* [[OMP_ARRAYCPY_SRCELEMENTPAST]], i32 1
|
||||
// CHECK2-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq %struct.S* [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP6]]
|
||||
|
@ -1060,12 +1060,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[A]], %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[B]], %struct.S** [[B_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[A_ADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC1ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[AGG_RESULT]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SaSERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) #[[ATTR7]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1337,7 +1337,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1348,7 +1348,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1357,7 +1357,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC1ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1365,12 +1365,12 @@ int main(int argc, char **argv) {
|
|||
// CHECK2-NEXT: store %struct.S* [[TMP0]], %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP1:%.*]] = load %struct.S*, %struct.S** [[DOTADDR]], align 8
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: call void @_ZN1SC2ERKS_(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP1]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN1SC2ERKS_
|
||||
// CHECK2-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[TMP0:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca %struct.S*, align 8
|
||||
|
@ -1406,7 +1406,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK3: arrayctor.loop:
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK3-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1461,7 +1461,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK3: arraydestroy.body:
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP12]], [[OMP_INNER_FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN6]]
|
||||
// CHECK3-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE7:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK3: arraydestroy.done7:
|
||||
|
@ -1470,27 +1470,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1501,7 +1501,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK3-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1535,7 +1535,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4-NEXT: br label [[ARRAYCTOR_LOOP:%.*]]
|
||||
// CHECK4: arrayctor.loop:
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi %struct.S* [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ]
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]])
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYCTOR_CUR]], i64 1
|
||||
// CHECK4-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq %struct.S* [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]]
|
||||
|
@ -1590,7 +1590,7 @@ int main(int argc, char **argv) {
|
|||
// CHECK4: arraydestroy.body:
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENTPAST:%.*]] = phi %struct.S* [ [[TMP12]], [[OMP_INNER_FOR_END]] ], [ [[ARRAYDESTROY_ELEMENT:%.*]], [[ARRAYDESTROY_BODY]] ]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_ELEMENT]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[ARRAYDESTROY_ELEMENTPAST]], i64 -1
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD1Ev(%struct.S* nonnull align 4 dereferenceable(4) [[ARRAYDESTROY_ELEMENT]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: [[ARRAYDESTROY_DONE:%.*]] = icmp eq %struct.S* [[ARRAYDESTROY_ELEMENT]], [[ARRAY_BEGIN6]]
|
||||
// CHECK4-NEXT: br i1 [[ARRAYDESTROY_DONE]], label [[ARRAYDESTROY_DONE7:%.*]], label [[ARRAYDESTROY_BODY]]
|
||||
// CHECK4: arraydestroy.done7:
|
||||
|
@ -1599,27 +1599,27 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: call void @_ZN1SC2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]])
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD1Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: [[THIS1:%.*]] = load %struct.S*, %struct.S** [[THIS_ADDR]], align 8
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: call void @_ZN1SD2Ev(%struct.S* nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SC2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
@ -1630,7 +1630,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN1SD2Ev
|
||||
// CHECK4-SAME: (%struct.S* nonnull dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-SAME: (%struct.S* nonnull align 4 dereferenceable(4) [[THIS:%.*]]) unnamed_addr #[[ATTR1]] align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: store %struct.S* [[THIS]], %struct.S** [[THIS_ADDR]], align 8
|
||||
|
|
|
@ -3218,12 +3218,12 @@ void foo() {
|
|||
// CHECK17-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK17-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK17-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK17-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3387,12 +3387,12 @@ void foo() {
|
|||
// CHECK18-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK18-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK18-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK18-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3556,12 +3556,12 @@ void foo() {
|
|||
// CHECK19-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK19-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK19-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK19-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3721,12 +3721,12 @@ void foo() {
|
|||
// CHECK20-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK20-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK20-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK20-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3886,12 +3886,12 @@ void foo() {
|
|||
// CHECK21-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK21-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK21-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK21-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3912,12 +3912,12 @@ void foo() {
|
|||
// CHECK22-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK22-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK22-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK22-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3938,12 +3938,12 @@ void foo() {
|
|||
// CHECK23-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK23-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK23-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK23-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
@ -3964,12 +3964,12 @@ void foo() {
|
|||
// CHECK24-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(8) [[V]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(8) [[V]])
|
||||
// CHECK24-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK24-SAME: (%struct.SS* nonnull dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.SS* nonnull align 4 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK24-NEXT: [[COMP:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -2789,12 +2789,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK17-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK17-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK17-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK17-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK17-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -2917,12 +2917,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK18-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK18-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK18-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK18-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK18-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -3045,12 +3045,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK19-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK19-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK19-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK19-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK19-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -3172,12 +3172,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK20-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK20-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK20-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK20-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK20-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -3299,12 +3299,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK21-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK21-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK21-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK21-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK21-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK21-NEXT: entry:
|
||||
// CHECK21-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK21-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -3339,12 +3339,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK22-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK22-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK22-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK22-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK22-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK22-NEXT: entry:
|
||||
// CHECK22-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK22-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -3379,12 +3379,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK23-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK23-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK23-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK23-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK23-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK23-NEXT: entry:
|
||||
// CHECK23-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK23-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -3418,12 +3418,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK24-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK24-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK24-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK24-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK24-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK24-NEXT: entry:
|
||||
// CHECK24-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK24-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -101,12 +101,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -245,12 +245,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -389,12 +389,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -531,12 +531,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -673,12 +673,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -733,12 +733,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -793,12 +793,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -851,12 +851,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(224352) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(224352) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -135,12 +135,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK1-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK1-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -482,12 +482,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK2-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK2-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK2-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 8
|
||||
|
@ -829,12 +829,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK3-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK3-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK3-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1173,12 +1173,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK4-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK4-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK4-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x i8*], align 4
|
||||
|
@ -1517,12 +1517,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK5-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK5-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK5-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK5-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1597,12 +1597,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK6-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: [[CALL:%.*]] = call signext i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK6-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK6-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK6-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1677,12 +1677,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK7-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK7-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK7-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK7-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
@ -1754,12 +1754,12 @@ int main (int argc, char **argv) {
|
|||
// CHECK8-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[V:%.*]] = alloca [[STRUCT_SS:%.*]], align 4
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: [[CALL:%.*]] = call i32 @_ZN2SSIiLi123ELx456EE3fooEv(%struct.SS* nonnull align 4 dereferenceable(496) [[V]])
|
||||
// CHECK8-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@_ZN2SSIiLi123ELx456EE3fooEv
|
||||
// CHECK8-SAME: (%struct.SS* nonnull dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-SAME: (%struct.SS* nonnull align 4 dereferenceable(496) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK8-NEXT: [[I:%.*]] = alloca i32, align 4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue