Home | History | Annotate | Download | only in CodeGenObjCXX
      1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
      2 
      3 struct CGRect {
      4   char* origin;
      5   unsigned size;
      6 };
      7 typedef struct CGRect CGRect;
      8 
      9 extern "C" bool CGRectIsEmpty(CGRect);
     10 
     11 @interface Foo {
     12   CGRect out;
     13 }
     14 @property CGRect bounds;
     15 - (CGRect) out;
     16 @end
     17 
     18 
     19 @implementation Foo
     20 
     21 - (void)bar {
     22     CGRect dataRect;
     23     CGRect virtualBounds;
     24 
     25 // CHECK: [[SRC:%.*]] = call { i8*, i32 } bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
     26 // CHECK-NEXT: bitcast
     27 // CHECK-NEXT:getelementptr inbounds { i8*, i32 }, { i8*, i32 }* [[SRC:%.*]]
     28 // CHECK-NEXT:extractvalue
     29 // CHECK-NEXT:store
     30 // CHECK-NEXT:getelementptr inbounds { i8*, i32 }, { i8*, i32 }* [[SRC:%.*]]
     31 // CHECK-NEXT:extractvalue
     32 // CHECK-NEXT:store
     33   dataRect = CGRectIsEmpty(virtualBounds) ? self.bounds : virtualBounds;
     34   dataRect = CGRectIsEmpty(virtualBounds) ? [self bounds] : virtualBounds;
     35   dataRect = CGRectIsEmpty(virtualBounds) ? virtualBounds : self.bounds;
     36 
     37   dataRect = CGRectIsEmpty(virtualBounds) ? self.out : virtualBounds;
     38   dataRect = CGRectIsEmpty(virtualBounds) ? [self out] : virtualBounds;
     39   dataRect = CGRectIsEmpty(virtualBounds) ? virtualBounds : self.out;
     40 }
     41 
     42 @dynamic bounds;
     43 - (CGRect) out { return out; }
     44 @end
     45