rjmccall added inline comments.
================
Comment at: lib/Sema/SemaExpr.cpp:12093
+ break;
+ }
+
----------------
lebedev.ri wrote:
> rjmccall wrote:
> > I think doing this here can result in double-warning if the overload
> > resolves to a builtin operator. Now, it might not actually be possible for
> > that to combine with the requirements for self-assignment, but still, I
> > think the right place to diagnose this for C++ is the same place we call
> > DiagnoseSelfMove in CreateOverloadedBinOp.
> >
> > Can CheckIdentityFieldAssignment just be integrated with
> > DiagnoseSelfAssignment so that callers don't need to do call both?
> > I think the right place to diagnose this for C++ is the same place we call
> > DiagnoseSelfMove in CreateOverloadedBinOp.
>
> ```
> switch (Opc) {
> case BO_Assign:
> case BO_DivAssign:
> case BO_SubAssign:
> case BO_AndAssign:
> case BO_OrAssign:
> case BO_XorAssign:
> DiagnoseSelfAssignment(Args[0], Args[1], OpLoc);
> CheckIdentityFieldAssignment(Args[0], Args[1], OpLoc);
> break;
> default:
> break;
> }
>
> // Check for a self move.
> if (Op == OO_Equal)
> DiagnoseSelfMove(Args[0], Args[1], OpLoc);
> ```
>
>
> ^ That does not appear to work. Pretty much all these tests start to fail.
>
Okay. It's possible that my suggestion is wrong. Can you explain more how
they fail?
Repository:
rC Clang
https://reviews.llvm.org/D44883
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits