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

References

tools/clang/lib/Sema/SemaChecking.cpp
11546   if (E->isTypeDependent() || E->isValueDependent()) return;
11546   if (E->isTypeDependent() || E->isValueDependent()) return;
11548   const Type *Source = S.Context.getCanonicalType(E->getType()).getTypePtr();
11562     S.Diag(E->getExprLoc(), diag::warn_atomic_implicit_seq_cst);
11566     if (isa<StringLiteral>(E))
11570       return DiagnoseImpCast(S, E, T, CC,
11572     if (isa<ObjCStringLiteral>(E) || isa<ObjCArrayLiteral>(E) ||
11572     if (isa<ObjCStringLiteral>(E) || isa<ObjCArrayLiteral>(E) ||
11573         isa<ObjCDictionaryLiteral>(E) || isa<ObjCBoxedExpr>(E)) {
11573         isa<ObjCDictionaryLiteral>(E) || isa<ObjCBoxedExpr>(E)) {
11576       return DiagnoseImpCast(S, E, T, CC,
11581       S.DiagnoseAlwaysNonNullPointer(E, Expr::NPCK_NotNull, /*IsEqual*/ false,
11591     if (E->EvaluateAsInt(Result, S.getASTContext(),
11595             S, E,
11605   if (auto *ArrayLiteral = dyn_cast<ObjCArrayLiteral>(E))
11607   else if (auto *DictionaryLiteral = dyn_cast<ObjCDictionaryLiteral>(E))
11615       return DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_vector_scalar);
11635       return DiagnoseImpCast(S, E, T, CC,
11660         if (E->EvaluateAsRValue(result, S.Context)) {
11671         DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_float_precision);
11678         DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_double_promotion);
11688       DiagnoseFloatingImpCast(S, E, T, CC);
11699     if (Target->isBooleanType() && isa<CallExpr>(E)) {
11703       CallExpr *CEx = cast<CallExpr>(E);
11710           DiagnoseImpCast(S, E, T, CC,
11722       if (E->EvaluateAsFixedPoint(Result, S.Context, Expr::SE_AllowSideEffects,
11728           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11728           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11731                                     << E->getSourceRange()
11739           E->EvaluateAsFixedPoint(Result, S.Context,
11749           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11749           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11752                                     << E->getSourceRange()
11762           E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {
11770           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11770           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11773                                     << E->getSourceRange()
11787     IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11799       if (E->isIntegerConstantExpr(SourceInt, S.Context)) {
11816               E->getExprLoc(), E,
11816               E->getExprLoc(), E,
11818                   << PrettySourceValue << PrettyTargetValue << E->getType() << T
11819                   << E->getSourceRange() << clang::SourceRange(CC));
11823         DiagnoseImpCast(S, E, T, CC,
11829   DiagnoseNullConversion(S, E, T, CC);
11831   S.DiscardMisalignedMemberAddress(Target, E);
11834     DiagnoseIntInBoolContext(S, E);
11845       !E->isKnownToHaveBooleanValue()) {
11847         S, E,
11849             << E->getType());
11852   IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11859     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects,
11871           E->getExprLoc(), E,
11871           E->getExprLoc(), E,
11873               << PrettySourceValue << PrettyTargetValue << E->getType() << T
11874               << E->getSourceRange() << clang::SourceRange(CC));
11882     if (TargetRange.Width == 32 && S.Context.getIntWidth(E->getType()) == 64)
11883       return DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_integer_64_32,
11885     return DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_integer_precision);
11889     if (auto *UO = dyn_cast<UnaryOperator>(E))
11893             return DiagnoseImpCast(S, E, T, CC,
11896             return DiagnoseImpCast(S, E, T, CC,
11908     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects) &&
11911       if (isSameWidthConstantConversion(S, E, T, CC)) {
11916             E->getExprLoc(), E,
11916             E->getExprLoc(), E,
11918                 << PrettySourceValue << PrettyTargetValue << E->getType() << T
11919                 << E->getSourceRange() << clang::SourceRange(CC));
11945     return DiagnoseImpCast(S, E, T, CC, DiagID);
11951   QualType SourceType = E->getType();
11953     if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E))
11969         return DiagnoseImpCast(S, E, SourceType, T, CC,