reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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,