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

References

tools/clang/lib/Sema/SemaChecking.cpp
11548   const Type *Source = S.Context.getCanonicalType(E->getType()).getTypePtr();
11549   const Type *Target = S.Context.getCanonicalType(T).getTypePtr();
11562     S.Diag(E->getExprLoc(), diag::warn_atomic_implicit_seq_cst);
11570       return DiagnoseImpCast(S, E, T, CC,
11576       return DiagnoseImpCast(S, E, T, CC,
11581       S.DiagnoseAlwaysNonNullPointer(E, Expr::NPCK_NotNull, /*IsEqual*/ false,
11589   if (isObjCSignedCharBool(S, T) && Source->isIntegralType(S.Context)) {
11589   if (isObjCSignedCharBool(S, T) && Source->isIntegralType(S.Context)) {
11591     if (E->EvaluateAsInt(Result, S.getASTContext(),
11595             S, E,
11596             S.Diag(CC, diag::warn_impcast_constant_value_to_objc_bool)
11606     checkObjCArrayLiteral(S, QualType(Target, 0), ArrayLiteral);
11608     checkObjCDictionaryLiteral(S, QualType(Target, 0), DictionaryLiteral);
11613       if (S.SourceMgr.isInSystemMacro(CC))
11615       return DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_vector_scalar);
11620     if (S.Context.getTypeSize(Source) == S.Context.getTypeSize(Target))
11620     if (S.Context.getTypeSize(Source) == S.Context.getTypeSize(Target))
11632       if (S.SourceMgr.isInSystemMacro(CC) || Target->isBooleanType())
11635       return DiagnoseImpCast(S, E, T, CC,
11636                              S.getLangOpts().CPlusPlus
11654       int Order = S.getASTContext().getFloatingTypeSemanticOrder(
11660         if (E->EvaluateAsRValue(result, S.Context)) {
11663                    S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)),
11664                    S.Context.getFloatTypeSemantics(QualType(SourceBT, 0))))
11668         if (S.SourceMgr.isInSystemMacro(CC))
11671         DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_float_precision);
11675         if (S.SourceMgr.isInSystemMacro(CC))
11678         DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_double_promotion);
11685       if (S.SourceMgr.isInSystemMacro(CC))
11688       DiagnoseFloatingImpCast(S, E, T, CC);
11710           DiagnoseImpCast(S, E, T, CC,
11722       if (E->EvaluateAsFixedPoint(Result, S.Context, Expr::SE_AllowSideEffects,
11723                                   S.isConstantEvaluated())) {
11725         APFixedPoint MaxVal = S.Context.getFixedPointMax(T);
11726         APFixedPoint MinVal = S.Context.getFixedPointMin(T);
11728           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11729                                 S.PDiag(diag::warn_impcast_fixed_point_range)
11738       if (!S.isConstantEvaluated() &&
11739           E->EvaluateAsFixedPoint(Result, S.Context,
11745             S.Context.getIntWidth(T),
11749           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11750                                 S.PDiag(diag::warn_impcast_fixed_point_range)
11761       if (!S.isConstantEvaluated() &&
11762           E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {
11767             Value, S.Context.getFixedPointSemantics(T), &Overflowed);
11770           S.DiagRuntimeBehavior(E->getExprLoc(), E,
11771                                 S.PDiag(diag::warn_impcast_fixed_point_range)
11787     IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11787     IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11793         S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)));
11799       if (E->isIntegerConstantExpr(SourceInt, S.Context)) {
11804             S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)));
11815           S.DiagRuntimeBehavior(
11817               S.PDiag(diag::warn_impcast_integer_float_precision_constant)
11823         DiagnoseImpCast(S, E, T, CC,
11829   DiagnoseNullConversion(S, E, T, CC);
11831   S.DiscardMisalignedMemberAddress(Target, E);
11834     DiagnoseIntInBoolContext(S, E);
11844   if (isObjCSignedCharBool(S, T) && !Source->isCharType() &&
11847         S, E,
11848         S.Diag(CC, diag::warn_impcast_int_to_objc_signed_char_bool)
11852   IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11852   IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11853   IntRange TargetRange = IntRange::forTargetOfCanonicalType(S.Context, Target);
11859     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects,
11860                          S.isConstantEvaluated())) {
11864       if (S.SourceMgr.isInSystemMacro(CC))
11870       S.DiagRuntimeBehavior(
11872           S.PDiag(diag::warn_impcast_integer_precision_constant)
11879     if (S.SourceMgr.isInSystemMacro(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);
11893             return DiagnoseImpCast(S, E, T, CC,
11896             return DiagnoseImpCast(S, E, T, CC,
11908     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects) &&
11909         !S.SourceMgr.isInSystemMacro(CC)) {
11911       if (isSameWidthConstantConversion(S, E, T, CC)) {
11915         S.DiagRuntimeBehavior(
11917             S.PDiag(diag::warn_impcast_integer_precision_constant)
11930     if (S.SourceMgr.isInSystemMacro(CC))
11945     return DiagnoseImpCast(S, E, T, CC, DiagID);
11952   if (!S.getLangOpts().CPlusPlus) {
11956         SourceType = S.Context.getTypeDeclType(Enum);
11957         Source = S.Context.getCanonicalType(SourceType).getTypePtr();
11966         if (S.SourceMgr.isInSystemMacro(CC))
11969         return DiagnoseImpCast(S, E, SourceType, T, CC,