diff options
Diffstat (limited to 'test/Modules/templates.mm')
-rw-r--r-- | test/Modules/templates.mm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/test/Modules/templates.mm b/test/Modules/templates.mm index 79e975a1ad12..95e7a9caea55 100644 --- a/test/Modules/templates.mm +++ b/test/Modules/templates.mm @@ -77,10 +77,10 @@ unsigned testMixedStruct() { // CHECK: %[[l:.*]] = alloca %[[ListInt:[^ ]*]], align 8 // CHECK: %[[r:.*]] = alloca %[[ListInt]], align 8 - // CHECK: call {{.*}}memcpy{{.*}}(i8* %{{.*}}, i8* bitcast ({{.*}}* @_ZZ15testMixedStructvE1l to i8*), i64 16, + // CHECK: call {{.*}}memcpy{{.*}}(i8* align {{[0-9]+}} %{{.*}}, i8* align {{[0-9]+}} bitcast ({{.*}}* @_ZZ15testMixedStructvE1l to i8*), i64 16, ListInt_left l{0, 1}; - // CHECK: call {{.*}}memcpy{{.*}}(i8* %{{.*}}, i8* bitcast ({{.*}}* @_ZZ15testMixedStructvE1r to i8*), i64 16, + // CHECK: call {{.*}}memcpy{{.*}}(i8* align {{[0-9]+}} %{{.*}}, i8* align {{[0-9]+}} bitcast ({{.*}}* @_ZZ15testMixedStructvE1r to i8*), i64 16, ListInt_right r{0, 2}; // CHECK: call void @_Z10useListIntR4ListIiE(%[[ListInt]]* dereferenceable({{[0-9]+}}) %[[l]]) @@ -122,3 +122,13 @@ void testWithAttributes() { static_assert(alignof(decltype(a)) == 2, ""); static_assert(alignof(decltype(b)) == 2, ""); } + +// Check that returnNonTrivial doesn't return Class0<S0> directly in registers. + +// CHECK: declare void @_Z16returnNonTrivialv(%struct.Class0* sret) + +@import template_nontrivial0; +@import template_nontrivial1; + +S1::S1() : a(returnNonTrivial()) { +} |