| 1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s |
| 2 | // rdar://15610943 |
| 3 | |
| 4 | struct _GLKMatrix4 |
| 5 | { |
| 6 | float m[16]; |
| 7 | }; |
| 8 | typedef struct _GLKMatrix4 GLKMatrix4; |
| 9 | |
| 10 | @interface NSObject @end |
| 11 | |
| 12 | @interface MyProgram |
| 13 | - (void)setTransform:(float[16])transform; |
| 14 | @end |
| 15 | |
| 16 | @interface ViewController |
| 17 | @property (nonatomic, assign) GLKMatrix4 transform; |
| 18 | @end |
| 19 | |
| 20 | @implementation ViewController |
| 21 | - (void)viewDidLoad { |
| 22 | MyProgram *program; |
| 23 | program.transform = self.transform.m; |
| 24 | } |
| 25 | @end |
| 26 | |
| 27 | // CHECK: [[M:%.*]] = getelementptr inbounds %struct._GLKMatrix4, %struct._GLKMatrix4* [[TMP:%.*]], i32 0, i32 0 |
| 28 | // CHECK: [[ARRAYDECAY:%.*]] = getelementptr inbounds [16 x float], [16 x float]* [[M]], i64 0, i64 0 |
| 29 | // CHECK: [[SIX:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES |
| 30 | // CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, float*)*)(i8* [[SEVEN:%.*]], i8* [[SIX]], float* [[ARRAYDECAY]]) |
| 31 | |