brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 8513bfa Raw
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