62 lines · plain
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -O0 -emit-llvm %s -o - | FileCheck %s2 3@interface MyNSObject 4@end5 6@interface SampleClass : MyNSObject {7 @public8 int _value;9}10+ (SampleClass*) new;11@end12 13@interface AppDelegate : MyNSObject14@end15 16extern void foo(int);17 18@implementation AppDelegate19- (void)application20{21 // Create set of objects in loop22 for(int i = 0; i < 2; i++) {23 SampleClass *sample = [SampleClass new];24 foo (sample->_value);25 }26}27@end28// CHECK: [[IVAR:%.*]] = load i64, ptr @"OBJC_IVAR_$_SampleClass._value", align 829// CHECK: [[ADDPTR:%.*]] = getelementptr inbounds i8, ptr [[CALL:%.*]], i64 [[IVAR]]30// CHECK: [[FIVE:%.*]] = load i32, ptr [[ADDPTR]], align 431// CHECK: call void @foo(i32 noundef [[FIVE]])32 33@implementation SampleClass34+ (SampleClass*) new { return 0; }35- (void) SampleClassApplication36{37 // Create set of objects in loop38 for(int i = 0; i < 2; i++) {39 SampleClass *sample = [SampleClass new];40 foo (sample->_value);41 }42}43@end44// CHECK: [[ZERO:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_, align 8, !invariant.load45// CHECK: [[IVAR:%.*]] = load i64, ptr @"OBJC_IVAR_$_SampleClass._value", align 8, !invariant.load46 47@interface Sample : SampleClass @end48 49@implementation Sample50- (void) SampleApplication51{52 // Create set of objects in loop53 for(int i = 0; i < 2; i++) {54 SampleClass *sample = [SampleClass new];55 foo (sample->_value);56 }57}58@end59// CHECK: [[ZERO:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_, align 8, !invariant.load 60// CHECK: [[IVAR:%.*]] = load i64, ptr @"OBJC_IVAR_$_SampleClass._value", align 8, !invariant.load61 62