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())
294 QualType FromType = getToType(0);
306 if (FromType->isRealFloatingType())
308 if (FromType->isIntegralOrUnscopedEnumerationType())
322 if (FromType->isRealFloatingType() && ToType->isIntegralType(Ctx)) {
324 } else if (FromType->isIntegralType(Ctx) && ToType->isRealFloatingType()) {
356 if (FromType->isRealFloatingType() && ToType->isRealFloatingType() &&
357 Ctx.getFloatingTypeOrder(FromType, ToType) == 1) {
358 // FromType is larger than ToType.
388 assert(FromType->isIntegralOrUnscopedEnumerationType());
390 const bool FromSigned = FromType->isSignedIntegerOrEnumerationType();
391 const unsigned FromWidth = Ctx.getIntWidth(FromType);
398 // Not all values of FromType can be represented in ToType.
1307 QualType FromType = From->getType();
1308 if (ToType->getAs<RecordType>() && FromType->getAs<RecordType>() &&
1309 (S.Context.hasSameUnqualifiedType(FromType, ToType) ||
1310 S.IsDerivedFrom(From->getLocStart(), FromType, ToType))) {
1313 ICS.Standard.setFromType(FromType);
1323 if (!S.Context.hasSameUnqualifiedType(FromType, ToType))
1385 /// \brief Determine whether the conversion from FromType to ToType is a valid
1387 bool Sema::IsNoReturnConversion(QualType FromType, QualType ToType,
1389 if (Context.hasSameUnqualifiedType(FromType, ToType))
1398 CanQualType CanFrom = Context.getCanonicalType(FromType);
1433 /// \brief Determine whether the conversion from FromType to ToType is a valid
1438 static bool IsVectorConversion(Sema &S, QualType FromType,
1442 if (!ToType->isVectorType() && !FromType->isVectorType())
1446 if (S.Context.hasSameUnqualifiedType(FromType, ToType))
1453 if (FromType->isExtVectorType())
1457 if (FromType->isArithmeticType()) {
1467 if (ToType->isVectorType() && FromType->isVectorType()) {
1468 if (S.Context.areCompatibleVectorTypes(FromType, ToType) ||
1469 S.isLaxVectorConversion(FromType, ToType)) {
1496 QualType FromType = From->getType();
1501 SCS.setFromType(FromType);
1507 (FromType->isRecordType() || ToType->isRecordType()))
1514 if (FromType == S.Context.OverloadTy) {
1521 FromType = Fn->getType();
1522 SCS.setFromType(FromType);
1527 S.ExtractUnqualifiedFunctionType(ToType), FromType)) {
1530 if (!S.IsNoReturnConversion(FromType,
1538 // function and recompute the FromType accordingly. Take advantage of the
1550 FromType = S.Context.getMemberPointerType(FromType, ClassType);
1555 FromType = S.Context.getPointerType(FromType);
1560 FromType,
1571 !FromType->isFunctionType() && !FromType->isArrayType() &&
1572 S.Context.getCanonicalType(FromType) != S.Context.OverloadTy) {
1578 if (const AtomicType *Atomic = FromType->getAs<AtomicType>())
1579 FromType = Atomic->getValueType();
1585 FromType = FromType.getUnqualifiedType();
1586 } else if (FromType->isArrayType()) {
1593 FromType = S.Context.getArrayDecayedType(FromType);
1606 SCS.setAllToTypes(FromType);
1609 } else if (FromType->isFunctionType() && argIsLValue) {
1621 FromType = S.Context.getPointerType(FromType);
1626 SCS.setToType(0, FromType);
1636 if (S.Context.hasSameUnqualifiedType(FromType, ToType)) {
1640 } else if (S.IsIntegralPromotion(From, FromType, ToType)) {
1643 FromType = ToType.getUnqualifiedType();
1644 } else if (S.IsFloatingPointPromotion(FromType, ToType)) {
1647 FromType = ToType.getUnqualifiedType();
1648 } else if (S.IsComplexPromotion(FromType, ToType)) {
1651 FromType = ToType.getUnqualifiedType();
1653 (FromType->isArithmeticType() ||
1654 FromType->isAnyPointerType() ||
1655 FromType->isBlockPointerType() ||
1656 FromType->isMemberPointerType() ||
1657 FromType->isNullPtrType())) {
1660 FromType = S.Context.BoolTy;
1661 } else if (FromType->isIntegralOrUnscopedEnumerationType() &&
1665 FromType = ToType.getUnqualifiedType();
1666 } else if (FromType->isAnyComplexType() && ToType->isAnyComplexType()) {
1669 FromType = ToType.getUnqualifiedType();
1670 } else if ((FromType->isAnyComplexType() && ToType->isArithmeticType()) ||
1671 (ToType->isAnyComplexType() && FromType->isArithmeticType())) {
1674 FromType = ToType.getUnqualifiedType();
1675 } else if (FromType->isRealFloatingType() && ToType->isRealFloatingType()) {
1679 if (&S.Context.getFloatTypeSemantics(FromType) !=
1681 bool Float128AndLongDouble = ((FromType == S.Context.Float128Ty &&
1683 (FromType == S.Context.LongDoubleTy &&
1692 FromType = ToType.getUnqualifiedType();
1693 } else if ((FromType->isRealFloatingType() &&
1695 (FromType->isIntegralOrUnscopedEnumerationType() &&
1699 FromType = ToType.getUnqualifiedType();
1700 } else if (S.IsBlockPointerConversion(FromType, ToType, FromType)) {
1703 S.isObjCWritebackConversion(FromType, ToType, FromType)) {
1705 } else if (S.IsPointerConversion(From, FromType, ToType, InOverloadResolution,
1706 FromType, IncompatibleObjC)) {
1710 FromType = FromType.getUnqualifiedType();
1711 } else if (S.IsMemberPointerConversion(From, FromType, ToType,
1712 InOverloadResolution, FromType)) {
1715 } else if (IsVectorConversion(S, FromType, ToType, SecondICK)) {
1717 FromType = ToType.getUnqualifiedType();
1719 S.Context.typesAreCompatible(ToType, FromType)) {
1722 FromType = ToType.getUnqualifiedType();
1723 } else if (S.IsNoReturnConversion(FromType, ToType, FromType)) {
1730 FromType = ToType;
1740 FromType = ToType;
1745 SCS.setToType(1, FromType);
1751 if (S.IsQualificationConversion(FromType, ToType, CStyle,
1755 FromType = ToType;
1756 CanonFrom = S.Context.getCanonicalType(FromType);
1766 CanonFrom = S.Context.getCanonicalType(FromType);
1771 FromType = ToType;
1775 SCS.setToType(2, FromType);
1826 /// expression From (whose potentially-adjusted type is FromType) to
1829 bool Sema::IsIntegralPromotion(Expr *From, QualType FromType, QualType ToType) {
1841 if (FromType->isPromotableIntegerType() && !FromType->isBooleanType() &&
1842 !FromType->isEnumeralType()) {
1844 (FromType->isSignedIntegerType() ||
1847 Context.getTypeSize(FromType) < Context.getTypeSize(ToType))) {
1872 if (const EnumType *FromEnumType = FromType->getAs<EnumType>()) {
1890 isCompleteType(From->getLocStart(), FromType))
1904 if (FromType->isAnyCharacterType() && !FromType->isCharType() &&
1908 bool FromIsSigned = FromType->isSignedIntegerType();
1909 uint64_t FromSize = Context.getTypeSize(FromType);
1943 if (FromType->isIntegralType(Context) &&
1950 (FromType->isSignedIntegerType() && BitWidth <= ToSize)) {
1956 if (FromType->isUnsignedIntegerType() && BitWidth <= ToSize) {
1967 if (FromType->isBooleanType() && To->getKind() == BuiltinType::Int) {
1975 /// FromType to ToType is a floating point promotion (C++ 4.6). If so,
1977 bool Sema::IsFloatingPointPromotion(QualType FromType, QualType ToType) {
1978 if (const BuiltinType *FromBuiltin = FromType->getAs<BuiltinType>())
2011 bool Sema::IsComplexPromotion(QualType FromType, QualType ToType) {
2012 const ComplexType *FromComplex = FromType->getAs<ComplexType>();
2090 /// expression From, which has the (possibly adjusted) type FromType,
2105 bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
2110 if (isObjCPointerConversion(FromType, ToType, ConvertedType,
2122 if (FromType->isBlockPointerType() && ToType->isPointerType() &&
2156 if (FromType->isObjCObjectPointerType() && ToPointeeType->isVoidType() &&
2159 FromType->getAs<ObjCObjectPointerType>(),
2164 const PointerType *FromTypePtr = FromType->getAs<PointerType>();
2257 bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
2264 Qualifiers FromQualifiers = FromType.getQualifiers();
2270 FromType->getAs<ObjCObjectPointerType>();
2320 else if (FromType->getAs<BlockPointerType>() &&
2331 if (const PointerType *FromCPtr = FromType->getAs<PointerType>())
2334 FromType->getAs<BlockPointerType>())
2431 /// \param FromType The type we're converting form.
2437 bool Sema::isObjCWritebackConversion(QualType FromType, QualType ToType,
2440 Context.hasSameUnqualifiedType(FromType, ToType))
2458 FromType->getAs<PointerType>())
2495 bool Sema::IsBlockPointerConversion(QualType FromType, QualType ToType,
2506 FromType->getAs<BlockPointerType>())
2595 static const FunctionProtoType *tryGetFunctionProtoType(QualType FromType) {
2596 if (auto *FPT = FromType->getAs<FunctionProtoType>())
2599 if (auto *MPT = FromType->getAs<MemberPointerType>())
2609 QualType FromType, QualType ToType) {
2611 if (FromType.isNull() || ToType.isNull()) {
2617 if (FromType->isMemberPointerType() && ToType->isMemberPointerType()) {
2618 const MemberPointerType *FromMember = FromType->getAs<MemberPointerType>(),
2625 FromType = FromMember->getPointeeType();
2629 if (FromType->isPointerType())
2630 FromType = FromType->getPointeeType();
2635 FromType = FromType.getNonReferenceType();
2639 if (FromType->isInstantiationDependentType() &&
2640 !FromType->getAs<TemplateSpecializationType>()) {
2646 if (Context.hasSameType(FromType, ToType)) {
2651 const FunctionProtoType *FromFunction = tryGetFunctionProtoType(FromType),
2726 QualType FromType = From->getType();
2731 if (Diagnose && !IsCStyleOrFunctionalCast && !FromType->isAnyPointerType() &&
2743 if (const PointerType *FromPtrType = FromType->getAs<PointerType>()) {
2778 FromType->getAs<ObjCObjectPointerType>()) {
2784 } else if (FromType->isBlockPointerType()) {
2790 if (!FromType->isBlockPointerType())
2803 /// expression From, which has the (possibly adjusted) type FromType, can be
2807 bool Sema::IsMemberPointerConversion(Expr *From, QualType FromType,
2824 const MemberPointerType *FromTypePtr = FromType->getAs<MemberPointerType>();
2853 QualType FromType = From->getType();
2854 const MemberPointerType *FromPtrType = FromType->getAs<MemberPointerType>();
2922 /// an rvalue of type FromType to ToType is a qualification conversion
2929 Sema::IsQualificationConversion(QualType FromType, QualType ToType,
2931 FromType = Context.getCanonicalType(FromType);
2935 // If FromType and ToType are the same type, this is not a
2937 if (FromType.getUnqualifiedType() == ToType.getUnqualifiedType())
2945 while (Context.UnwrapSimilarPointerTypes(FromType, ToType)) {
2954 Qualifiers FromQuals = FromType.getQualifiers();
3001 // We are left with FromType and ToType being the pointee types
3002 // after unwrapping the original FromType and ToType the same number
3003 // of types. If we unwrapped any pointers, and if FromType and
3006 return UnwrappedAnyPointer && Context.hasSameUnqualifiedType(FromType,ToType);
4860 TryObjectArgumentInitialization(Sema &S, SourceLocation Loc, QualType FromType,
4876 if (const PointerType *PT = FromType->getAs<PointerType>()) {
4877 FromType = PT->getPointeeType();
4884 assert(FromType->isRecordType());
4905 QualType FromTypeCanon = S.Context.getCanonicalType(FromType);
4910 FromType, ImplicitParamType);
4920 } else if (S.IsDerivedFrom(Loc, FromType, ClassType))
4924 FromType, ImplicitParamType);
4937 ICS.setBad(BadConversionSequence::lvalue_ref_to_rvalue, FromType,
4946 ICS.setBad(BadConversionSequence::rvalue_ref_to_lvalue, FromType,
4957 ICS.Standard.setFromType(FromType);