Revert "[Sema] check PseudoObject when rebuilding CXXOperatorCallExpr in template...
authorJeroen Dobbelaere <jeroen.dobbelaere@synopsys.com>
Wed, 1 Dec 2021 10:18:30 +0000 (11:18 +0100)
committerJeroen Dobbelaere <jeroen.dobbelaere@synopsys.com>
Wed, 1 Dec 2021 10:18:30 +0000 (11:18 +0100)
This reverts commit 0c047a8e13320fb8e9dabbf7a3c6a00fe81198c7.

A number of buildbots started failing. Reverting for now.

clang/lib/Sema/TreeTransform.h
clang/test/SemaCXX/PR51855.cpp [deleted file]
clang/test/SemaObjCXX/instantiate-property-access.mm

index 152feac..7f3326c 100644 (file)
@@ -14630,28 +14630,18 @@ TreeTransform<Derived>::RebuildCXXOperatorCallExpr(OverloadedOperatorKind Op,
   Expr *Callee = OrigCallee->IgnoreParenCasts();
   bool isPostIncDec = Second && (Op == OO_PlusPlus || Op == OO_MinusMinus);
 
-  if (const BuiltinType *pty = First->getType()->getAsPlaceholderType()) {
-    if (Second && !isPostIncDec) {
-      BinaryOperatorKind Opc = BinaryOperator::getOverloadedOpcode(Op);
-      if (pty->getKind() == BuiltinType::PseudoObject &&
-          BinaryOperator::isAssignmentOp(Opc))
-        return SemaRef.checkPseudoObjectAssignment(/*Scope=*/nullptr, OpLoc,
-                                                   Opc, First, Second);
-    } else {
-      UnaryOperatorKind Opc =
-          UnaryOperator::getOverloadedOpcode(Op, isPostIncDec);
-      if (pty->getKind() == BuiltinType::PseudoObject &&
-          UnaryOperator::isIncrementDecrementOp(Opc))
-        return SemaRef.checkPseudoObjectIncDec(/*Scope=*/nullptr, OpLoc, Opc,
-                                               First);
-    }
+  if (First->getObjectKind() == OK_ObjCProperty) {
+    BinaryOperatorKind Opc = BinaryOperator::getOverloadedOpcode(Op);
+    if (BinaryOperator::isAssignmentOp(Opc))
+      return SemaRef.checkPseudoObjectAssignment(/*Scope=*/nullptr, OpLoc, Opc,
+                                                 First, Second);
     ExprResult Result = SemaRef.CheckPlaceholderExpr(First);
     if (Result.isInvalid())
       return ExprError();
     First = Result.get();
   }
 
-  if (Second && Second->getType()->isPlaceholderType()) {
+  if (Second && Second->getObjectKind() == OK_ObjCProperty) {
     ExprResult Result = SemaRef.CheckPlaceholderExpr(Second);
     if (Result.isInvalid())
       return ExprError();
diff --git a/clang/test/SemaCXX/PR51855.cpp b/clang/test/SemaCXX/PR51855.cpp
deleted file mode 100644 (file)
index 6ace3bf..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -S -triple %itanium_abi_triple -fms-extensions -emit-llvm %s -o - | FileCheck %s
-
-struct F {};
-
-F operator*=(F &lhs, int rhs);
-
-F operator++(F &lhs);
-
-struct S {
-  short _m;
-  S(short _m) : _m(_m) {}
-
-  void putM(short rhs) { _m = rhs; }
-  short getM() { return _m; }
-
-  __declspec(property(get = getM, put = putM)) short theData;
-};
-
-int test1a(int i) {
-  S tmp(i);
-  tmp.theData *= 2;
-  return tmp.theData;
-}
-
-// CHECK-LABEL: define {{.*}} @_Z6test1ai(
-// CHECK: call {{.*}} @_ZN1SC1Es(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-// CHECK: call {{.*}} @_ZN1S4putMEs(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-
-template <typename T>
-int test1b(int i) {
-  T tmp(i);
-  tmp.theData *= 2;
-  return tmp.theData;
-}
-
-template int test1b<S>(int);
-
-// CHECK-LABEL: define {{.*}} @_Z6test1bI1SEii(
-// CHECK: call {{.*}} @_ZN1SC1Es(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-// CHECK: call {{.*}} @_ZN1S4putMEs(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-
-int test2a(int i) {
-  S tmp(i);
-  ++tmp.theData;
-  return tmp.theData;
-}
-
-// CHECK-LABEL: define {{.*}} i32 @_Z6test2ai(
-// CHECK: call {{.*}} @_ZN1SC1Es(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-// CHECK: call {{.*}} @_ZN1S4putMEs(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-
-template <typename T>
-int test2b(int i) {
-  T tmp(i);
-  ++tmp.theData;
-  return tmp.theData;
-}
-
-template int test2b<S>(int);
-
-// CHECK-LABEL: define {{.*}} i32 @_Z6test2bI1SEii(
-// CHECK: call void @_ZN1SC1Es(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
-// CHECK: call {{.*}} @_ZN1S4putMEs(
-// CHECK: call {{.*}} @_ZN1S4getMEv(
index e792825..8d5c201 100644 (file)
@@ -1,5 +1,4 @@
 // RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -DDEPENDENT -verify %s
 // expected-no-diagnostics
 
 class C {};
@@ -10,10 +9,6 @@ bool operator == (int i, C c2);
 
 C operator += (C c1, C c2);
 
-C operator++(C c1);
-
-bool operator!(C c1);
-
 enum TextureType { TextureType3D  };
 
 @interface Texture
@@ -21,13 +16,9 @@ enum TextureType { TextureType3D  };
 @property  C c;
 @end
 
-template <typename T> class Framebuffer {
+template <typename> class Framebuffer {
 public:
-#ifdef DEPENDENT
-  T **color_attachment;
-#else
-  Texture **color_attachment;
-#endif
+  Texture **color_attachment;  
   Framebuffer();
 };
 
@@ -37,15 +28,8 @@ template <typename T> Framebuffer<T>::Framebuffer() {
   (void)(color_attachment[0].c == color_attachment[0].c);
   (void)(color_attachment[0].c == 1);
   (void)(1 == color_attachment[0].c);
-  (void)(!color_attachment[0].textureType);
-  ++color_attachment[0].textureType;
-  (void)(!color_attachment[0].c);
 }
 
 void foo() {
-#ifdef DEPENDENT
-  Framebuffer<Texture>();
-#else
   Framebuffer<int>();
-#endif
 }