| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-nonfragile-abi -o - %s | FileCheck %s |
| // rdar://8427922 |
| |
| struct Vector3D |
| { |
| float x, y, z; |
| Vector3D(); |
| Vector3D(const Vector3D &inVector); |
| Vector3D(float initX, float initY, float initZ); |
| Vector3D &operator=(const Vector3D & rhs); |
| }; |
| |
| @interface Object3D |
| { |
| Vector3D position; |
| Vector3D length; |
| } |
| @property (assign) Vector3D position; |
| - (Vector3D) length; |
| - (void) setLength: (Vector3D)arg; |
| @end |
| |
| int main () |
| { |
| Object3D *myObject; |
| Vector3D V3D(1.0f, 1.0f, 1.0f); |
| // CHECK: call void @_ZN8Vector3DC1ERKS_ |
| myObject.position = V3D; |
| |
| // CHECK: call void @_ZN8Vector3DC1ERKS_ |
| myObject.length = V3D; |
| |
| return 0; |
| } |
| |
| // rdar: // 8437253 |
| extern "C" void exit(...); |
| |
| struct CGPoint { |
| float x; |
| float y; |
| }; |
| typedef struct CGPoint CGPoint; |
| |
| extern "C" const CGPoint CGPointZero; |
| |
| bool operator==(const CGPoint& a, const CGPoint& b); |
| |
| @interface TIconViewSettings |
| @property (assign, nonatomic) CGPoint gridOffset; |
| @end |
| |
| @implementation TIconViewSettings |
| - (CGPoint) gridOffset |
| { |
| return CGPointZero; |
| } |
| |
| - (void) foo |
| { |
| if ((self.gridOffset) == CGPointZero) |
| exit(1); |
| |
| if (self.gridOffset == CGPointZero) |
| exit(1); |
| } |
| @end |
| |