reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/Sema/SemaExpr.cpp
12830   std::tie(LHS, RHS) = CorrectDelayedTyposInBinOp(*this, Opc, LHSExpr, RHSExpr);
12831   if (!LHS.isUsable() || !RHS.isUsable())
12844         ResultTy = InvalidOperands(OpLoc, LHS, RHS);
12854       ResultTy = InvalidOperands(OpLoc, LHS, RHS);
12869     ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, QualType());
12871         LHS.get()->getObjectKind() != OK_ObjCProperty) {
12872       VK = LHS.get()->getValueKind();
12873       OK = LHS.get()->getObjectKind();
12876       DiagnoseSelfAssignment(*this, LHS.get(), RHS.get(), OpLoc, true);
12877       DiagnoseSelfMove(LHS.get(), RHS.get(), OpLoc);
12893         if (auto *DRE = dyn_cast<DeclRefExpr>(LHS.get()->IgnoreParens()))
12898       if (LHS.get()->getType().hasNonTrivialToPrimitiveCopyCUnion())
12899         checkNonTrivialCUnion(LHS.get()->getType(), LHS.get()->getExprLoc(),
12899         checkNonTrivialCUnion(LHS.get()->getType(), LHS.get()->getExprLoc(),
12902     RecordModifiableNonNullParam(*this, LHS.get());
12906     ResultTy = CheckPointerToMemberOperands(LHS, RHS, VK, OpLoc,
12912     ResultTy = CheckMultiplyDivideOperands(LHS, RHS, OpLoc, false,
12916     ResultTy = CheckRemainderOperands(LHS, RHS, OpLoc);
12920     ResultTy = CheckAdditionOperands(LHS, RHS, OpLoc, Opc);
12924     ResultTy = CheckSubtractionOperands(LHS, RHS, OpLoc);
12928     ResultTy = CheckShiftOperands(LHS, RHS, OpLoc, Opc);
12935     ResultTy = CheckCompareOperands(LHS, RHS, OpLoc, Opc);
12940     ResultTy = CheckCompareOperands(LHS, RHS, OpLoc, Opc);
12944     ResultTy = CheckCompareOperands(LHS, RHS, OpLoc, Opc);
12948     checkObjCPointerIntrospection(*this, LHS, RHS, OpLoc);
12952     ResultTy = CheckBitwiseOperands(LHS, RHS, OpLoc, Opc);
12957     ResultTy = CheckLogicalOperands(LHS, RHS, OpLoc, Opc);
12962     CompResultTy = CheckMultiplyDivideOperands(LHS, RHS, OpLoc, true,
12965     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
12966       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
12969     CompResultTy = CheckRemainderOperands(LHS, RHS, OpLoc, true);
12971     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
12972       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
12976     CompResultTy = CheckAdditionOperands(LHS, RHS, OpLoc, Opc, &CompLHSTy);
12977     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
12978       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
12982     CompResultTy = CheckSubtractionOperands(LHS, RHS, OpLoc, &CompLHSTy);
12983     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
12984       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
12988     CompResultTy = CheckShiftOperands(LHS, RHS, OpLoc, Opc, true);
12990     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
12991       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
12995     DiagnoseSelfAssignment(*this, LHS.get(), RHS.get(), OpLoc, true);
12998     CompResultTy = CheckBitwiseOperands(LHS, RHS, OpLoc, Opc);
13000     if (!CompResultTy.isNull() && !LHS.isInvalid() && !RHS.isInvalid())
13001       ResultTy = CheckAssignmentOperands(LHS.get(), RHS, OpLoc, CompResultTy);
13004     ResultTy = CheckCommaOperands(*this, LHS, RHS, OpLoc);
13011   if (ResultTy.isNull() || LHS.isInvalid() || RHS.isInvalid())
13019          isVector(LHS.get()->getType(), Context.HalfTy) &&
13022                                             LHS.get()->getType());
13025   CheckArrayAccess(LHS.get());
13028   if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(LHS.get()->IgnoreParenCasts())) {
13032     if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) {
13034       Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign)
13035           << FixItHint::CreateInsertion(LHS.get()->getBeginLoc(),
13042       Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign);
13045            dyn_cast<ObjCIvarRefExpr>(LHS.get()->IgnoreParenCasts()))
13051       return convertHalfVecBinOp(*this, LHS, RHS, Opc, ResultTy, VK, OK, false,
13053     return new (Context) BinaryOperator(LHS.get(), RHS.get(), Opc, ResultTy, VK,
13058   if (getLangOpts().CPlusPlus && LHS.get()->getObjectKind() !=
13061     OK = LHS.get()->getObjectKind();
13065     return convertHalfVecBinOp(*this, LHS, RHS, Opc, ResultTy, VK, OK, true,
13069       LHS.get(), RHS.get(), Opc, ResultTy, VK, OK, CompLHSTy, CompResultTy,