Home | History | Annotate | Download | only in CodeGenObjC
      1 // RUN: %clang_cc1 -fblocks -triple arm64-apple-darwin %s -emit-llvm -o - | FileCheck %s
      2 // rdar://12416433
      3 
      4 struct stret { int x[100]; };
      5 struct stret one = {{1}};
      6 
      7 @interface Test  @end
      8 
      9 @implementation Test
     10 +(struct stret) method { return one; }
     11 @end
     12 
     13 int main(int argc, const char **argv)
     14 {
     15     [(id)(argc&~255) method];
     16     // CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (%struct.stret*, i8*, i8*)*)(%struct.stret* sret [[T0:%[^,]+]]
     17     // CHECK: [[T0P:%.*]] = bitcast %struct.stret* [[T0]] to i8*
     18     // CHECK: call void @llvm.memset.p0i8.i64(i8* [[T0P]], i8 0, i64 400, i32 4, i1 false)
     19 
     20     [Test method];
     21     // CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (%struct.stret*, i8*, i8*)*)(%struct.stret* sret [[T1:%[^,]+]]
     22     // CHECK-NOT: call void @llvm.memset.p0i8.i64(
     23 }
     24