Revert r126678.
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 28 Feb 2011 21:19:34 +0000 (21:19 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 28 Feb 2011 21:19:34 +0000 (21:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126685 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCMac.cpp
test/CodeGenObjC/fpret.m
test/CodeGenObjC/nonvararg-messaging-call.m [deleted file]
test/CodeGenObjC/property-type-mismatch.m
test/CodeGenObjC/property.m
test/CodeGenObjC/variadic-sends.m
test/CodeGenObjCXX/property-dot-reference.mm
test/CodeGenObjCXX/property-object-conditional-exp.mm

index 904466947c9f7ce4a1689261e06cf77f543e48b4..8dbd85f8b738798867ea75602fd4d3d3a147ac97 100644 (file)
@@ -183,7 +183,7 @@ private:
     Params.push_back(SelectorPtrTy);
     return
       CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                        Params, false),
+                                                        Params, true),
                                 "objc_msgSend");
   }
 
@@ -194,7 +194,7 @@ private:
     Params.push_back(SelectorPtrTy);
     return
       CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::getVoidTy(VMContext),
-                                                        Params, false),
+                                                        Params, true),
                                 "objc_msgSend_stret");
 
   }
@@ -209,7 +209,7 @@ private:
       CGM.CreateRuntimeFunction(llvm::FunctionType::get(
                                              llvm::Type::getDoubleTy(VMContext),
                                                         Params,
-                                                        false),
+                                                        true),
                                 "objc_msgSend_fpret");
 
   }
@@ -221,7 +221,7 @@ private:
     Params.push_back(SuperPtrTy);
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                             Params, false),
+                                                             Params, true),
                                      SuperName);
   }
 
@@ -232,7 +232,7 @@ private:
     Params.push_back(SuperPtrTy);
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                             Params, false),
+                                                             Params, true),
                                      SuperName);
   }
 
@@ -245,7 +245,7 @@ private:
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(
       llvm::FunctionType::get(llvm::Type::getVoidTy(VMContext),
-                              Params, false),
+                              Params, true),
       "objc_msgSendSuper_stret");
   }
 
@@ -258,7 +258,7 @@ private:
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(
       llvm::FunctionType::get(llvm::Type::getVoidTy(VMContext),
-                              Params, false),
+                              Params, true),
       "objc_msgSendSuper2_stret");
   }
 
@@ -721,7 +721,7 @@ public:
     Params.push_back(ObjectPtrTy);
     Params.push_back(MessageRefPtrTy);
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                             Params, false),
+                                                             Params, true),
                                      "objc_msgSend_fixup");
   }
 
@@ -731,7 +731,7 @@ public:
     Params.push_back(ObjectPtrTy);
     Params.push_back(MessageRefPtrTy);
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                             Params, false),
+                                                             Params, true),
                                      "objc_msgSend_fpret_fixup");
   }
 
@@ -741,7 +741,7 @@ public:
     Params.push_back(ObjectPtrTy);
     Params.push_back(MessageRefPtrTy);
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                             Params, false),
+                                                             Params, true),
                                      "objc_msgSend_stret_fixup");
   }
 
@@ -752,7 +752,7 @@ public:
     Params.push_back(SuperPtrTy);
     Params.push_back(SuperMessageRefPtrTy);
     return  CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                              Params, false),
+                                                              Params, true),
                                       "objc_msgSendSuper2_fixup");
   }
 
@@ -763,7 +763,7 @@ public:
     Params.push_back(SuperPtrTy);
     Params.push_back(SuperMessageRefPtrTy);
     return  CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                              Params, false),
+                                                              Params, true),
                                       "objc_msgSendSuper2_stret_fixup");
   }
 
@@ -5693,7 +5693,7 @@ CodeGen::RValue CGObjCNonFragileABIMac::EmitMessageSend(
                                                       FunctionType::ExtInfo());
   llvm::Value *Callee = CGF.Builder.CreateStructGEP(Arg1, 0);
   Callee = CGF.Builder.CreateLoad(Callee);
-  const llvm::FunctionType *FTy = Types.GetFunctionType(FnInfo1, false);
+  const llvm::FunctionType *FTy = Types.GetFunctionType(FnInfo1, true);
   Callee = CGF.Builder.CreateBitCast(Callee,
                                      llvm::PointerType::getUnqual(FTy));
   return CGF.EmitCall(FnInfo1, Callee, Return, ActualArgs);
index 015a04275698ea7dac78580b10ddef7e46966aff..48848885c1f6277bc0fe0eabdc150f1d80ecc9a9 100644 (file)
 
 
 // CHECK-X86_32: define void @t0()
-// CHECK-X86_32: call float bitcast (double (i8*, i8*)* @objc_msgSend_fpret to
-// CHECK-X86_32: call double @objc_msgSend_fpret(
-// CHECK-X86_32: call x86_fp80 bitcast (double (i8*, i8*)* @objc_msgSend_fpret to
+// CHECK-X86_32: call float bitcast {{.*}} @objc_msgSend_fpret to
+// CHECK-X86_32: call double {{.*}} @objc_msgSend_fpret(
+// CHECK-X86_32: call x86_fp80 bitcast {{.*}} @objc_msgSend_fpret to
 // CHECK-X86_32: }
 //
 // CHECK-X86_64: define void @t0()
-// CHECK-X86_64: call float bitcast (i8* (i8*, i8*)* @objc_msgSend to
-// CHECK-X86_64: call double bitcast (i8* (i8*, i8*)* @objc_msgSend to
-// CHECK-X86_64: call x86_fp80 bitcast (double (i8*, i8*)* @objc_msgSend_fpret to
+// CHECK-X86_64: call float bitcast {{.*}} @objc_msgSend to
+// CHECK-X86_64: call double bitcast {{.*}} @objc_msgSend to
+// CHECK-X86_64: call x86_fp80 bitcast {{.*}} @objc_msgSend_fpret to
 // CHECK-X86_64: }
 //
 // CHECK-ARMV7: define void @t0()
-// CHECK-ARMV7: call float bitcast (i8* (i8*, i8*)* @objc_msgSend to
-// CHECK-ARMV7: call double bitcast (i8* (i8*, i8*)* @objc_msgSend to
-// CHECK-ARMV7: call double bitcast (i8* (i8*, i8*)* @objc_msgSend to
+// CHECK-ARMV7: call float bitcast {{.*}} @objc_msgSend to
+// CHECK-ARMV7: call double bitcast {{.*}} @objc_msgSend to
+// CHECK-ARMV7: call double bitcast {{.*}} @objc_msgSend to
 // CHECK-ARMV7: }
 void t0() {
   [(A*)0 floatValue];
diff --git a/test/CodeGenObjC/nonvararg-messaging-call.m b/test/CodeGenObjC/nonvararg-messaging-call.m
deleted file mode 100644 (file)
index fecfdac..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fobjc-nonfragile-abi  -emit-llvm -o - %s | FileCheck %s
-// rdar://9048030
-
-@interface Foo
-+(id)alloc;
--(id)init;
--(id)self;
--(id)retain;
--(void)release;
--(id)autorelease;
-@end
-
-void test(void)
-{
-       [[[[[[Foo alloc] init] retain] autorelease] self] release];
-}
-
-// CHECK-NOT: call i8* (i8*, i8*, ...)* @objc_msgSend
index 9cccdede974a731a6811c412d1c906972c90b975..7045947b1abfe5bba4ea6aedb5a4ce5286352321 100644 (file)
@@ -10,8 +10,8 @@ void bar(Foo *x) {
   x.myfo++;
 }
 
-// CHECK: [[C1:%.*]] = call float bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK: [[C1:%.*]] = call float bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
 // CHECK: [[I:%.*]] = fadd float [[C1]], 1.000000e+00
 // CHECK: [[CONV:%.*]] = fptosi float [[I]] to i32
 // CHECK: [[T3:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_2"
-// CHECK:  call void bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK:  call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
index 8ffcc00697c90c726ff29e5913ffddf2efa21a1b..dd0786eb30ee0ec4d24426089fcdf7af36eb1e70 100644 (file)
@@ -60,21 +60,21 @@ void test2() {
   // CHECK:      [[BASE:%.*]] = call [[A:%.*]]* @test2_helper()
   // CHECK-NEXT: [[SEL:%.*]] = load i8**
   // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
+  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
   // CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[LD]], 1
   // CHECK-NEXT: [[SEL:%.*]] = load i8**
   // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
+  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
   test2_helper().dyn++;
 
   // CHECK:      [[BASE:%.*]] = call [[A]]* @test2_helper()
   // CHECK-NEXT: [[SEL:%.*]] = load i8**
   // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
+  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
   // CHECK-NEXT: [[ADD:%.*]] = mul nsw i32 [[LD]], 10
   // CHECK-NEXT: [[SEL:%.*]] = load i8**
   // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
+  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
   test2_helper().dyn *= 10;
 }
 
index 083a8568b91f2b8c0fff5bff40470f978cdeca4f..ea13823bc719a6a2b43e512d67ca9c6d40ca9ca7 100644 (file)
@@ -8,33 +8,33 @@
 @end
 
 void f0(A *a) {
-  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*)*)
-  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*)*)
+  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*)*)
+  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*)*)
   [a im0];
 }
 
 void f1(A *a) {
-  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32)*)
-  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32)*)
+  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)
+  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)
   [a im1: 1];
 }
 
 void f2(A *a) {
-  // CHECK-X86-32: call void (i8*, i8*, i32, i32, ...)* bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32, i32, ...)*)
-  // CHECK-X86-64: call void (i8*, i8*, i32, i32, ...)* bitcast (i8* (i8*, i8*)* @objc_msgSend to void (i8*, i8*, i32, i32, ...)*)
+  // CHECK-X86-32: call void (i8*, i8*, i32, i32, ...)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32, i32, ...)*)
+  // CHECK-X86-64: call void (i8*, i8*, i32, i32, ...)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32, i32, ...)*)
   [a im2: 1, 2];
 }
 
 @interface B : A @end
 @implementation B : A
 -(void) foo {
-  // CHECK-X86-32: call void bitcast (i8* (%struct._objc_method_description*, i8*)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32)*)
-  // CHECK-X86-64: call void bitcast (i8* (%struct._objc_method_description*, i8*)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32)*)
+  // CHECK-X86-32: call void bitcast (i8* (%struct._objc_method_description*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32)*)
+  // CHECK-X86-64: call void bitcast (i8* (%struct._objc_method_description*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32)*)
   [super im1: 1];
 }
 -(void) bar {
-  // CHECK-X86-32: call void (%struct._objc_method_description*, i8*, i32, i32, ...)* bitcast (i8* (%struct._objc_method_description*, i8*)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32, i32, ...)*)
-  // CHECK-X86-64: call void (%struct._objc_method_description*, i8*, i32, i32, ...)* bitcast (i8* (%struct._objc_method_description*, i8*)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32, i32, ...)*)
+  // CHECK-X86-32: call void (%struct._objc_method_description*, i8*, i32, i32, ...)* bitcast (i8* (%struct._objc_method_description*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32, i32, ...)*)
+  // CHECK-X86-64: call void (%struct._objc_method_description*, i8*, i32, i32, ...)* bitcast (i8* (%struct._objc_method_description*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_method_description*, i8*, i32, i32, ...)*)
   [super im2: 1, 2];
 }
 
index 820525c9ca4ef211dfdce3e21066641e1f86a6e8..6b53639f54cb583a1efcd1e597dae1ceda33f563 100644 (file)
@@ -11,7 +11,7 @@ void GetURL() const;
 
 @implementation TNodeIconAndNameCell     
 - (const TFENode&) node {
-// CHECK: call %struct.TFENode* bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK: call %struct.TFENode* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
 // CHECK-NEXT: call void @_ZNK7TFENode6GetURLEv(%struct.TFENode* %{{.*}})
        self.node.GetURL();
 }      // expected-warning {{control reaches end of non-void function}}
@@ -27,11 +27,11 @@ void f0(const X &parent);
 - (const X&) target;
 @end
 void f1(A *a) {
-// CHECK: [[PRP:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK: [[PRP:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
 // CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* [[PRP]])
   f0(a.target);
 
-// CHECK: [[MSG:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK: [[MSG:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
 // CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* [[MSG]])
   f0([a target]);
 }
index 631158135b9b8d790f6c33ef988440e6d0520266..826c351e79efa90e59d508227ee3ec7e8a2448f8 100644 (file)
@@ -22,7 +22,7 @@ extern "C" bool CGRectIsEmpty(CGRect);
     CGRect dataRect;
     CGRect virtualBounds;
 
-// CHECK: [[SRC:%.*]] = call %struct.CGRect bitcast (i8* (i8*, i8*)* @objc_msgSend
+// CHECK: [[SRC:%.*]] = call %struct.CGRect bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
 // CHECK-NEXT:store %struct.CGRect [[SRC]], %struct.CGRect*
   dataRect = CGRectIsEmpty(virtualBounds) ? self.bounds : virtualBounds;
   dataRect = CGRectIsEmpty(virtualBounds) ? [self bounds] : virtualBounds;