Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGenObjCXX/literals.mm
Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | void test_array() { | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NEXT: [[PTR2:%.*]] = bitcast i8** [[ARR]] to i8* | // CHECK-NEXT: [[PTR2:%.*]] = bitcast i8** [[ARR]] to i8* | ||||
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) | // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) | ||||
// CHECK-NEXT: ret void | // CHECK-NEXT: ret void | ||||
// Check cleanups | // Check cleanups | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: invoke void @_ZN1YD1Ev | // CHECK: call unwindabort void @_ZN1YD1Ev | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: invoke void @_ZN1XD1Ev | // CHECK: call unwindabort void @_ZN1XD1Ev | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: unreachable | // CHECK: resume { | ||||
} | } | ||||
// CHECK-LABEL: define weak_odr void @_Z24test_array_instantiationIiEvv | // CHECK-LABEL: define weak_odr void @_Z24test_array_instantiationIiEvv | ||||
template<typename T> | template<typename T> | ||||
void test_array_instantiation() { | void test_array_instantiation() { | ||||
// CHECK: [[ARR:%[a-zA-Z0-9.]+]] = alloca i8* | // CHECK: [[ARR:%[a-zA-Z0-9.]+]] = alloca i8* | ||||
// CHECK: [[OBJECTS:%[a-zA-Z0-9.]+]] = alloca [2 x i8*] | // CHECK: [[OBJECTS:%[a-zA-Z0-9.]+]] = alloca [2 x i8*] | ||||
Show All 27 Lines | void test_array_instantiation() { | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NEXT: [[PTR2]] = bitcast i8** [[ARR]] to i8* | // CHECK-NEXT: [[PTR2]] = bitcast i8** [[ARR]] to i8* | ||||
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) | // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) | ||||
// CHECK-NEXT: ret void | // CHECK-NEXT: ret void | ||||
// Check cleanups | // Check cleanups | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: invoke void @_ZN1YD1Ev | // CHECK: call unwindabort void @_ZN1YD1Ev | ||||
// CHECK: call void @llvm.objc.release | // CHECK: call void @llvm.objc.release | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: invoke void @_ZN1XD1Ev | // CHECK: call unwindabort void @_ZN1XD1Ev | ||||
// CHECK-NOT: call void @llvm.objc.release | // CHECK-NOT: call void @llvm.objc.release | ||||
// CHECK: unreachable | // CHECK: resume | ||||
} | } | ||||
template void test_array_instantiation<int>(); | template void test_array_instantiation<int>(); | ||||