From 416ada0f75bab22b084a1776deb229cd4a669c4d Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Thu, 1 Jun 2017 20:58:49 +0000 Subject: Vendor import of clang trunk r304460: https://llvm.org/svn/llvm-project/cfe/trunk@304460 --- test/CodeGenObjC/parameterized_classes.m | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'test/CodeGenObjC/parameterized_classes.m') diff --git a/test/CodeGenObjC/parameterized_classes.m b/test/CodeGenObjC/parameterized_classes.m index b75cf2e3ad2d..8fe5c52b8d39 100644 --- a/test/CodeGenObjC/parameterized_classes.m +++ b/test/CodeGenObjC/parameterized_classes.m @@ -68,3 +68,31 @@ void blockTest(NSMutableArray *array, NSString *name) { // CHECK: call i8* @objc_retainBlock // CHECK: ret void } + +// CHECK-LABEL: define internal void @"\01-[Derived setDest:] +// CHECK: %[[SELFADDR:.*]] = alloca %[[SELFTY:.*]]* +// CHECK: %[[AADDR:.*]] = alloca %[[IVARTY:.*]]* +// CHECK: %[[V2:.*]] = load %[[IVARTY]]*, %[[IVARTY]]** %[[AADDR]] +// CHECK: %[[V3:.*]] = load %[[SELFTY]]*, %[[SELFTY]]** %[[SELFADDR]] +// CHECK: %[[IVAR:.*]] = load i64, i64* @"OBJC_IVAR_$_Base._destination" +// CHECK: %[[V4:.*]] = bitcast %[[SELFTY]]* %[[V3]] to i8* +// CHECK: %[[ADDPTR:.*]] = getelementptr inbounds i8, i8* %[[V4]], i64 %[[IVAR]] +// CHECK: %[[V5:.*]] = bitcast i8* %[[ADDPTR]] to %[[IVARTY]]** +// CHECK: %[[V6:.*]] = bitcast %[[IVARTY]]** %[[V5]] to i8** +// CHECK: %[[V7:.*]] = bitcast %[[IVARTY]]* %[[V2]] to i8* +// CHECK: call void @objc_storeStrong(i8** %[[V6]], i8* %[[V7]]) + +@interface Base : NSObject { + DestType _destination; +} +@end + +@interface Derived : Base +- (void)setDest:(NSObject *)a; +@end + +@implementation Derived +- (void)setDest:(NSObject *)a { + _destination = a; +} +@end -- cgit v1.3