Home | History | Annotate | Download | only in Sema

Lines Matching refs:FromType

214   // Note that FromType has not necessarily been transformed by the
216 // check for their presence as well as checking whether FromType is
236 QualType FromType = getFromType();
239 // Note that FromType has not necessarily been transformed by the
243 FromType = Context.getArrayDecayedType(FromType);
245 if (Second == ICK_Pointer_Conversion && FromType->isAnyPointerType())
293 QualType FromType = getToType(0);
298 if (FromType->isRealFloatingType())
300 if (FromType->isIntegralOrUnscopedEnumerationType())
314 if (FromType->isRealFloatingType() && ToType->isIntegralType(Ctx)) {
316 } else if (FromType->isIntegralType(Ctx) && ToType->isRealFloatingType()) {
348 if (FromType->isRealFloatingType() && ToType->isRealFloatingType() &&
349 Ctx.getFloatingTypeOrder(FromType, ToType) == 1) {
350 // FromType is larger than ToType.
380 assert(FromType->isIntegralOrUnscopedEnumerationType());
382 const bool FromSigned = FromType->isSignedIntegerOrEnumerationType();
383 const unsigned FromWidth = Ctx.getIntWidth(FromType);
390 // Not all values of FromType can be represented in ToType.
1255 QualType FromType = From->getType();
1256 if (ToType->getAs<RecordType>() && FromType->getAs<RecordType>() &&
1257 (S.Context.hasSameUnqualifiedType(FromType, ToType) ||
1258 S.IsDerivedFrom(From->getLocStart(), FromType, ToType))) {
1261 ICS.Standard.setFromType(FromType);
1271 if (!S.Context.hasSameUnqualifiedType(FromType, ToType))
1333 /// \brief Determine whether the conversion from FromType to ToType is a valid
1335 bool Sema::IsNoReturnConversion(QualType FromType, QualType ToType,
1337 if (Context.hasSameUnqualifiedType(FromType, ToType))
1346 CanQualType CanFrom = Context.getCanonicalType(FromType);
1381 /// \brief Determine whether the conversion from FromType to ToType is a valid
1386 static bool IsVectorConversion(Sema &S, QualType FromType,
1390 if (!ToType->isVectorType() && !FromType->isVectorType())
1394 if (S.Context.hasSameUnqualifiedType(FromType, ToType))
1401 if (FromType->isExtVectorType())
1405 if (FromType->isArithmeticType()) {
1415 if (ToType->isVectorType() && FromType->isVectorType()) {
1416 if (S.Context.areCompatibleVectorTypes(FromType, ToType) ||
1417 S.isLaxVectorConversion(FromType, ToType)) {
1444 QualType FromType = From->getType();
1449 SCS.setFromType(FromType);
1455 (FromType->isRecordType() || ToType->isRecordType()))
1462 if (FromType == S.Context.OverloadTy) {
1469 FromType = Fn->getType();
1470 SCS.setFromType(FromType);
1475 S.ExtractUnqualifiedFunctionType(ToType), FromType)) {
1478 if (!S.IsNoReturnConversion(FromType,
1486 // function and recompute the FromType accordingly. Take advantage of the
1498 FromType = S.Context.getMemberPointerType(FromType, ClassType);
1503 FromType = S.Context.getPointerType(FromType);
1508 FromType,
1519 !FromType->isFunctionType() && !FromType->isArrayType() &&
1520 S.Context.getCanonicalType(FromType) != S.Context.OverloadTy) {
1526 if (const AtomicType *Atomic = FromType->getAs<AtomicType>())
1527 FromType = Atomic->getValueType();
1533 FromType = FromType.getUnqualifiedType();
1534 } else if (FromType->isArrayType()) {
1541 FromType = S.Context.getArrayDecayedType(FromType);
1554 SCS.setAllToTypes(FromType);
1557 } else if (FromType->isFunctionType() && argIsLValue) {
1569 FromType = S.Context.getPointerType(FromType);
1574 SCS.setToType(0, FromType);
1584 if (S.Context.hasSameUnqualifiedType(FromType, ToType)) {
1588 } else if (S.IsIntegralPromotion(From, FromType, ToType)) {
1591 FromType = ToType.getUnqualifiedType();
1592 } else if (S.IsFloatingPointPromotion(FromType, ToType)) {
1595 FromType = ToType.getUnqualifiedType();
1596 } else if (S.IsComplexPromotion(FromType, ToType)) {
1599 FromType = ToType.getUnqualifiedType();
1601 (FromType->isArithmeticType() ||
1602 FromType->isAnyPointerType() ||
1603 FromType->isBlockPointerType() ||
1604 FromType->isMemberPointerType() ||
1605 FromType->isNullPtrType())) {
1608 FromType = S.Context.BoolTy;
1609 } else if (FromType->isIntegralOrUnscopedEnumerationType() &&
1613 FromType = ToType.getUnqualifiedType();
1614 } else if (FromType->isAnyComplexType() && ToType->isAnyComplexType()) {
1617 FromType = ToType.getUnqualifiedType();
1618 } else if ((FromType->isAnyComplexType() && ToType->isArithmeticType()) ||
1619 (ToType->isAnyComplexType() && FromType->isArithmeticType())) {
1622 FromType = ToType.getUnqualifiedType();
1623 } else if (FromType->isRealFloatingType() && ToType->isRealFloatingType()) {
1626 FromType = ToType.getUnqualifiedType();
1627 } else if ((FromType->isRealFloatingType() &&
1629 (FromType->isIntegralOrUnscopedEnumerationType() &&
1633 FromType = ToType.getUnqualifiedType();
1634 } else if (S.IsBlockPointerConversion(FromType, ToType, FromType)) {
1637 S.isObjCWritebackConversion(FromType, ToType, FromType)) {
1639 } else if (S.IsPointerConversion(From, FromType, ToType, InOverloadResolution,
1640 FromType, IncompatibleObjC)) {
1644 FromType = FromType.getUnqualifiedType();
1645 } else if (S.IsMemberPointerConversion(From, FromType, ToType,
1646 InOverloadResolution, FromType)) {
1649 } else if (IsVectorConversion(S, FromType, ToType, SecondICK)) {
1651 FromType = ToType.getUnqualifiedType();
1653 S.Context.typesAreCompatible(ToType, FromType)) {
1656 FromType = ToType.getUnqualifiedType();
1657 } else if (S.IsNoReturnConversion(FromType, ToType, FromType)) {
1664 FromType = ToType;
1674 FromType = ToType;
1679 SCS.setToType(1, FromType);
1685 if (S.IsQualificationConversion(FromType, ToType, CStyle,
1689 FromType = ToType;
1690 CanonFrom = S.Context.getCanonicalType(FromType);
1700 CanonFrom = S.Context.getCanonicalType(FromType);
1705 FromType = ToType;
1709 SCS.setToType(2, FromType);
1760 /// expression From (whose potentially-adjusted type is FromType) to
1763 bool Sema::IsIntegralPromotion(Expr *From, QualType FromType, QualType ToType) {
1775 if (FromType->isPromotableIntegerType() && !FromType->isBooleanType() &&
1776 !FromType->isEnumeralType()) {
1778 (FromType->isSignedIntegerType() ||
1781 (!FromType->isSignedIntegerType() &&
1782 Context.getTypeSize(FromType) < Context.getTypeSize(ToType)))) {
1807 if (const EnumType *FromEnumType = FromType->getAs<EnumType>()) {
1825 isCompleteType(From->getLocStart(), FromType))
1839 if (FromType->isAnyCharacterType() && !FromType->isCharType() &&
1843 bool FromIsSigned = FromType->isSignedIntegerType();
1844 uint64_t FromSize = Context.getTypeSize(FromType);
1878 if (FromType->isIntegralType(Context) &&
1885 (FromType->isSignedIntegerType() && BitWidth <= ToSize)) {
1891 if (FromType->isUnsignedIntegerType() && BitWidth <= ToSize) {
1902 if (FromType->isBooleanType() && To->getKind() == BuiltinType::Int) {
1910 /// FromType to ToType is a floating point promotion (C++ 4.6). If so,
1912 bool Sema::IsFloatingPointPromotion(QualType FromType, QualType ToType) {
1913 if (const BuiltinType *FromBuiltin = FromType->getAs<BuiltinType>())
1945 bool Sema::IsComplexPromotion(QualType FromType, QualType ToType) {
1946 const ComplexType *FromComplex = FromType->getAs<ComplexType>();
2024 /// expression From, which has the (possibly adjusted) type FromType,
2039 bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
2044 if (isObjCPointerConversion(FromType, ToType, ConvertedType,
2056 if (FromType->isBlockPointerType() && ToType->isPointerType() &&
2090 if (FromType->isObjCObjectPointerType() && ToPointeeType->isVoidType() &&
2093 FromType->getAs<ObjCObjectPointerType>(),
2098 const PointerType *FromTypePtr = FromType->getAs<PointerType>();
2191 bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
2198 Qualifiers FromQualifiers = FromType.getQualifiers();
2204 FromType->getAs<ObjCObjectPointerType>();
2254 else if (FromType->getAs<BlockPointerType>() &&
2265 if (const PointerType *FromCPtr = FromType->getAs<PointerType>())
2268 FromType->getAs<BlockPointerType>())
2365 /// \param FromType The type we're converting form.
2371 bool Sema::isObjCWritebackConversion(QualType FromType, QualType ToType,
2374 Context.hasSameUnqualifiedType(FromType, ToType))
2392 if (const PointerType *FromPointer = FromType->getAs<PointerType>())
2429 bool Sema::IsBlockPointerConversion(QualType FromType, QualType ToType,
2440 FromType->getAs<BlockPointerType>())
2530 static const FunctionProtoType *tryGetFunctionProtoType(QualType FromType) {
2531 if (auto *FPT = FromType->getAs<FunctionProtoType>())
2534 if (auto *MPT = FromType->getAs<MemberPointerType>())
2544 QualType FromType, QualType ToType) {
2546 if (FromType.isNull() || ToType.isNull()) {
2552 if (FromType->isMemberPointerType() && ToType->isMemberPointerType()) {
2553 const MemberPointerType *FromMember = FromType->getAs<MemberPointerType>(),
2560 FromType = FromMember->getPointeeType();
2564 if (FromType->isPointerType())
2565 FromType = FromType->getPointeeType();
2570 FromType = FromType.getNonReferenceType();
2574 if (FromType->isInstantiationDependentType() &&
2575 !FromType->getAs<TemplateSpecializationType>()) {
2581 if (Context.hasSameType(FromType, ToType)) {
2586 const FunctionProtoType *FromFunction = tryGetFunctionProtoType(FromType),
2660 QualType FromType = From->getType();
2665 if (!IsCStyleOrFunctionalCast && !FromType->isAnyPointerType() &&
2677 if (const PointerType *FromPtrType = FromType->getAs<PointerType>()) {
2706 FromType->getAs<ObjCObjectPointerType>()) {
2712 } else if (FromType->isBlockPointerType()) {
2718 if (!FromType->isBlockPointerType())
2731 /// expression From, which has the (possibly adjusted) type FromType, can be
2735 bool Sema::IsMemberPointerConversion(Expr *From, QualType FromType,
2752 const MemberPointerType *FromTypePtr = FromType->getAs<MemberPointerType>();
2781 QualType FromType = From->getType();
2782 const MemberPointerType *FromPtrType = FromType->getAs<MemberPointerType>();
2850 /// an rvalue of type FromType to ToType is a qualification conversion
2857 Sema::IsQualificationConversion(QualType FromType, QualType ToType,
2859 FromType = Context.getCanonicalType(FromType);
2863 // If FromType and ToType are the same type, this is not a
2865 if (FromType.getUnqualifiedType() == ToType.getUnqualifiedType())
2873 while (Context.UnwrapSimilarPointerTypes(FromType, ToType)) {
2882 Qualifiers FromQuals = FromType.getQualifiers();
2925 // We are left with FromType and ToType being the pointee types
2926 // after unwrapping the original FromType and ToType the same number
2927 // of types. If we unwrapped any pointers, and if FromType and
2930 return UnwrappedAnyPointer && Context.hasSameUnqualifiedType(FromType,ToType);
4800 TryObjectArgumentInitialization(Sema &S, SourceLocation Loc, QualType FromType,
4816 if (const PointerType *PT = FromType->getAs<PointerType>()) {
4817 FromType = PT->getPointeeType();
4824 assert(FromType->isRecordType());
4845 QualType FromTypeCanon = S.Context.getCanonicalType(FromType);
4850 FromType, ImplicitParamType);
4860 } else if (S.IsDerivedFrom(Loc, FromType, ClassType))
4864 FromType, ImplicitParamType);
4877 ICS.setBad(BadConversionSequence::lvalue_ref_to_rvalue, FromType,
4886 ICS.setBad(BadConversionSequence::rvalue_ref_to_lvalue, FromType,
4897 ICS.Standard.setFromType(FromType);