• Home
  • Raw
  • Download

Lines Matching refs:Ty

47 static ABIArgInfo coerceToIntArray(QualType Ty,  in coerceToIntArray()  argument
51 const uint64_t Size = Context.getTypeSize(Ty); in coerceToIntArray()
52 const uint64_t Alignment = Context.getTypeAlign(Ty); in coerceToIntArray()
77 ABIInfo::getNaturalAlignIndirect(QualType Ty, bool ByRef, bool Realign, in getNaturalAlignIndirect() argument
79 return ABIArgInfo::getIndirect(getContext().getTypeAlignInChars(Ty), in getNaturalAlignIndirect()
84 ABIInfo::getNaturalAlignIndirectInReg(QualType Ty, bool Realign) const { in getNaturalAlignIndirectInReg() argument
85 return ABIArgInfo::getIndirectInReg(getContext().getTypeAlignInChars(Ty), in getNaturalAlignIndirectInReg()
90 QualType Ty) const { in EmitMSVAArg()
114 static QualType useFirstFieldIfTransparentUnion(QualType Ty) { in useFirstFieldIfTransparentUnion() argument
115 if (const RecordType *UT = Ty->getAsUnionType()) { in useFirstFieldIfTransparentUnion()
122 return Ty; in useFirstFieldIfTransparentUnion()
145 bool ABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const { in isHomogeneousAggregateBaseType()
154 bool ABIInfo::shouldSignExtUnsignedType(QualType Ty) const { in shouldSignExtUnsignedType()
164 if (llvm::Type *Ty = getCoerceToType()) in dump() local
165 Ty->print(OS); in dump()
484 static bool is32Or64BitBasicType(QualType Ty, ASTContext &Context) { in is32Or64BitBasicType() argument
486 if (const ComplexType *CTy = Ty->getAs<ComplexType>()) in is32Or64BitBasicType()
487 Ty = CTy->getElementType(); in is32Or64BitBasicType()
492 if (!Ty->getAs<BuiltinType>() && !Ty->hasPointerRepresentation() && in is32Or64BitBasicType()
493 !Ty->isEnumeralType() && !Ty->isBlockPointerType()) in is32Or64BitBasicType()
496 uint64_t Size = Context.getTypeSize(Ty); in is32Or64BitBasicType()
509 static bool canExpandIndirectArgument(QualType Ty, ASTContext &Context) { in canExpandIndirectArgument() argument
511 const RecordType *RT = Ty->getAs<RecordType>(); in canExpandIndirectArgument()
544 if (Size != Context.getTypeSize(Ty)) in canExpandIndirectArgument()
570 QualType Ty) const override;
580 QualType Ty) const { in EmitVAArg()
584 ABIArgInfo DefaultABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
585 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
587 if (isAggregateTypeForABI(Ty)) { in classifyArgumentType()
590 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
591 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
593 return getNaturalAlignIndirect(Ty); in classifyArgumentType()
597 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
598 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
600 return (Ty->isPromotableIntegerType() ? in classifyArgumentType()
632 ABIArgInfo classifyArgumentType(QualType Ty) const;
651 ABIArgInfo WebAssemblyABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
652 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
654 if (isAggregateTypeForABI(Ty)) { in classifyArgumentType()
657 if (auto RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
658 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
660 if (isEmptyRecord(getContext(), Ty, true)) in classifyArgumentType()
665 if (const Type *SeltTy = isSingleElementStruct(Ty, getContext())) in classifyArgumentType()
670 return DefaultABIInfo::classifyArgumentType(Ty); in classifyArgumentType()
709 Address VAListAddr, QualType Ty) const override;
727 QualType Ty) const { in EmitVAArg()
732 ABIArgInfo PNaClABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
733 if (isAggregateTypeForABI(Ty)) { in classifyArgumentType()
734 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
735 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
736 return getNaturalAlignIndirect(Ty); in classifyArgumentType()
737 } else if (const EnumType *EnumTy = Ty->getAs<EnumType>()) { in classifyArgumentType()
739 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
740 } else if (Ty->isFloatingType()) { in classifyArgumentType()
745 return (Ty->isPromotableIntegerType() ? in classifyArgumentType()
775 llvm::Type* Ty) { in X86AdjustInlineAsmType() argument
776 if ((Constraint == "y" || Constraint == "&y") && Ty->isVectorTy()) { in X86AdjustInlineAsmType()
777 if (cast<llvm::VectorType>(Ty)->getBitWidth() != 64) { in X86AdjustInlineAsmType()
786 return Ty; in X86AdjustInlineAsmType()
791 static bool isX86VectorTypeForVectorCall(ASTContext &Context, QualType Ty) { in isX86VectorTypeForVectorCall() argument
792 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in isX86VectorTypeForVectorCall()
795 } else if (const VectorType *VT = Ty->getAs<VectorType>()) { in isX86VectorTypeForVectorCall()
844 bool isHomogeneousAggregateBaseType(QualType Ty) const override { in isHomogeneousAggregateBaseType()
846 return isX86VectorTypeForVectorCall(getContext(), Ty); in isHomogeneousAggregateBaseType()
849 bool isHomogeneousAggregateSmallEnough(const Type *Ty, in isHomogeneousAggregateSmallEnough() argument
855 bool shouldReturnTypeInRegister(QualType Ty, ASTContext &Context) const;
859 ABIArgInfo getIndirectResult(QualType Ty, bool ByVal, CCState &State) const;
861 ABIArgInfo getIndirectReturnResult(QualType Ty, CCState &State) const;
864 unsigned getTypeStackAlignInBytes(QualType Ty, unsigned Align) const;
866 Class classify(QualType Ty) const;
869 bool shouldUseInReg(QualType Ty, CCState &State, bool &NeedsPadding) const;
883 QualType Ty) const override;
922 llvm::Type* Ty) const override { in adjustInlineAsmType()
923 return X86AdjustInlineAsmType(CGF, Constraint, Ty); in adjustInlineAsmType()
1027 bool X86_32ABIInfo::shouldReturnTypeInRegister(QualType Ty, in shouldReturnTypeInRegister() argument
1029 uint64_t Size = Context.getTypeSize(Ty); in shouldReturnTypeInRegister()
1035 if (Ty->isVectorType()) { in shouldReturnTypeInRegister()
1046 if (Ty->getAs<BuiltinType>() || Ty->hasPointerRepresentation() || in shouldReturnTypeInRegister()
1047 Ty->isAnyComplexType() || Ty->isEnumeralType() || in shouldReturnTypeInRegister()
1048 Ty->isBlockPointerType() || Ty->isMemberPointerType()) in shouldReturnTypeInRegister()
1052 if (const ConstantArrayType *AT = Context.getAsConstantArrayType(Ty)) in shouldReturnTypeInRegister()
1056 const RecordType *RT = Ty->getAs<RecordType>(); in shouldReturnTypeInRegister()
1165 static bool isSSEVectorType(ASTContext &Context, QualType Ty) { in isSSEVectorType() argument
1166 return Ty->getAs<VectorType>() && Context.getTypeSize(Ty) == 128; in isSSEVectorType()
1169 static bool isRecordWithSSEVectorType(ASTContext &Context, QualType Ty) { in isRecordWithSSEVectorType() argument
1170 const RecordType *RT = Ty->getAs<RecordType>(); in isRecordWithSSEVectorType()
1194 unsigned X86_32ABIInfo::getTypeStackAlignInBytes(QualType Ty, in getTypeStackAlignInBytes() argument
1208 if (Align >= 16 && (isSSEVectorType(getContext(), Ty) || in getTypeStackAlignInBytes()
1209 isRecordWithSSEVectorType(getContext(), Ty))) in getTypeStackAlignInBytes()
1215 ABIArgInfo X86_32ABIInfo::getIndirectResult(QualType Ty, bool ByVal, in getIndirectResult() argument
1220 return getNaturalAlignIndirectInReg(Ty); in getIndirectResult()
1222 return getNaturalAlignIndirect(Ty, false); in getIndirectResult()
1226 unsigned TypeAlign = getContext().getTypeAlign(Ty) / 8; in getIndirectResult()
1227 unsigned StackAlign = getTypeStackAlignInBytes(Ty, TypeAlign); in getIndirectResult()
1238 X86_32ABIInfo::Class X86_32ABIInfo::classify(QualType Ty) const { in classify()
1239 const Type *T = isSingleElementStruct(Ty, getContext()); in classify()
1241 T = Ty.getTypePtr(); in classify()
1251 bool X86_32ABIInfo::shouldUseInReg(QualType Ty, CCState &State, in shouldUseInReg() argument
1255 Class C = classify(Ty); in shouldUseInReg()
1260 unsigned Size = getContext().getTypeSize(Ty); in shouldUseInReg()
1287 if (Ty->isIntegralOrEnumerationType()) in shouldUseInReg()
1290 if (Ty->isPointerType()) in shouldUseInReg()
1293 if (Ty->isReferenceType()) in shouldUseInReg()
1305 ABIArgInfo X86_32ABIInfo::classifyArgumentType(QualType Ty, in classifyArgumentType() argument
1309 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
1312 const RecordType *RT = Ty->getAs<RecordType>(); in classifyArgumentType()
1316 return getIndirectResult(Ty, false, State); in classifyArgumentType()
1328 isHomogeneousAggregate(Ty, Base, NumElts)) { in classifyArgumentType()
1331 if (Ty->isBuiltinType() || Ty->isVectorType()) in classifyArgumentType()
1335 return getIndirectResult(Ty, /*ByVal=*/false, State); in classifyArgumentType()
1338 if (isAggregateTypeForABI(Ty)) { in classifyArgumentType()
1342 return getIndirectResult(Ty, true, State); in classifyArgumentType()
1346 return getIndirectResult(Ty, true, State); in classifyArgumentType()
1350 if (isEmptyRecord(getContext(), Ty, true)) in classifyArgumentType()
1356 if (shouldUseInReg(Ty, State, NeedsPadding)) { in classifyArgumentType()
1357 unsigned SizeInRegs = (getContext().getTypeSize(Ty) + 31) / 32; in classifyArgumentType()
1368 if (getContext().getTypeSize(Ty) <= 4*32 && in classifyArgumentType()
1369 canExpandIndirectArgument(Ty, getContext())) in classifyArgumentType()
1375 return getIndirectResult(Ty, true, State); in classifyArgumentType()
1378 if (const VectorType *VT = Ty->getAs<VectorType>()) { in classifyArgumentType()
1382 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
1389 if (IsX86_MMXType(CGT.ConvertType(Ty))) in classifyArgumentType()
1396 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
1397 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
1400 bool InReg = shouldUseInReg(Ty, State, NeedsPadding); in classifyArgumentType()
1402 if (Ty->isPromotableIntegerType()) { in classifyArgumentType()
1470 llvm::Type *Ty = llvm::Type::getInt8Ty(getVMContext()); in addFieldToArgStruct() local
1471 Ty = llvm::ArrayType::get(Ty, NumBytes.getQuantity()); in addFieldToArgStruct()
1472 FrameFields.push_back(Ty); in addFieldToArgStruct()
1542 Address VAListAddr, QualType Ty) const { in EmitVAArg()
1544 auto TypeInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
1551 getTypeStackAlignInBytes(Ty, TypeInfo.second.getQuantity())); in EmitVAArg()
1553 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*Indirect*/ false, in EmitVAArg()
1734 llvm::Type *GetByteVectorType(QualType Ty) const;
1744 ABIArgInfo getIndirectReturnResult(QualType Ty) const;
1751 ABIArgInfo getIndirectResult(QualType Ty, unsigned freeIntRegs) const;
1755 ABIArgInfo classifyArgumentType(QualType Ty,
1761 bool IsIllegalVectorType(QualType Ty) const;
1799 QualType Ty) const override;
1801 QualType Ty) const override;
1818 QualType Ty) const override;
1820 bool isHomogeneousAggregateBaseType(QualType Ty) const override { in isHomogeneousAggregateBaseType()
1822 return isX86VectorTypeForVectorCall(getContext(), Ty); in isHomogeneousAggregateBaseType()
1825 bool isHomogeneousAggregateSmallEnough(const Type *Ty, in isHomogeneousAggregateSmallEnough() argument
1832 ABIArgInfo classify(QualType Ty, unsigned &FreeSSERegs,
1863 llvm::Type* Ty) const override { in adjustInlineAsmType()
1864 return X86AdjustInlineAsmType(CGF, Constraint, Ty); in adjustInlineAsmType()
1879 if (getABIInfo().isPassedUsingAVXType(it->Ty)) { in isNoProtoCallVariadic()
2101 void X86_64ABIInfo::classify(QualType Ty, uint64_t OffsetBase, in classify() argument
2116 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in classify()
2146 if (const EnumType *ET = Ty->getAs<EnumType>()) { in classify()
2152 if (Ty->hasPointerRepresentation()) { in classify()
2157 if (Ty->isMemberPointerType()) { in classify()
2158 if (Ty->isMemberFunctionPointerType()) { in classify()
2180 if (const VectorType *VT = Ty->getAs<VectorType>()) { in classify()
2235 if (const ComplexType *CT = Ty->getAs<ComplexType>()) { in classify()
2238 uint64_t Size = getContext().getTypeSize(Ty); in classify()
2270 if (const ConstantArrayType *AT = getContext().getAsConstantArrayType(Ty)) { in classify()
2273 uint64_t Size = getContext().getTypeSize(Ty); in classify()
2313 if (const RecordType *RT = Ty->getAs<RecordType>()) { in classify()
2314 uint64_t Size = getContext().getTypeSize(Ty); in classify()
2432 ABIArgInfo X86_64ABIInfo::getIndirectReturnResult(QualType Ty) const { in getIndirectReturnResult()
2435 if (!isAggregateTypeForABI(Ty)) { in getIndirectReturnResult()
2437 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in getIndirectReturnResult()
2438 Ty = EnumTy->getDecl()->getIntegerType(); in getIndirectReturnResult()
2440 return (Ty->isPromotableIntegerType() ? in getIndirectReturnResult()
2444 return getNaturalAlignIndirect(Ty); in getIndirectReturnResult()
2447 bool X86_64ABIInfo::IsIllegalVectorType(QualType Ty) const { in IsIllegalVectorType()
2448 if (const VectorType *VecTy = Ty->getAs<VectorType>()) { in IsIllegalVectorType()
2458 ABIArgInfo X86_64ABIInfo::getIndirectResult(QualType Ty, in getIndirectResult() argument
2468 if (!isAggregateTypeForABI(Ty) && !IsIllegalVectorType(Ty)) { in getIndirectResult()
2470 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in getIndirectResult()
2471 Ty = EnumTy->getDecl()->getIntegerType(); in getIndirectResult()
2473 return (Ty->isPromotableIntegerType() ? in getIndirectResult()
2477 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in getIndirectResult()
2478 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in getIndirectResult()
2482 unsigned Align = std::max(getContext().getTypeAlign(Ty) / 8, 8U); in getIndirectResult()
2506 uint64_t Size = getContext().getTypeSize(Ty); in getIndirectResult()
2520 llvm::Type *X86_64ABIInfo::GetByteVectorType(QualType Ty) const { in GetByteVectorType()
2523 if (const Type *InnerTy = isSingleElementStruct(Ty, getContext())) in GetByteVectorType()
2524 Ty = QualType(InnerTy, 0); in GetByteVectorType()
2526 llvm::Type *IRType = CGT.ConvertType(Ty); in GetByteVectorType()
2532 uint64_t Size = getContext().getTypeSize(Ty); in GetByteVectorType()
2547 static bool BitsContainNoUserData(QualType Ty, unsigned StartBit, in BitsContainNoUserData() argument
2552 unsigned TySize = (unsigned)Context.getTypeSize(Ty); in BitsContainNoUserData()
2556 if (const ConstantArrayType *AT = Context.getAsConstantArrayType(Ty)) { in BitsContainNoUserData()
2575 if (const RecordType *RT = Ty->getAs<RecordType>()) { in BitsContainNoUserData()
2929 QualType Ty, unsigned freeIntRegs, unsigned &neededInt, unsigned &neededSSE, in classifyArgumentType() argument
2933 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
2936 classify(Ty, 0, Lo, Hi, isNamedArg); in classifyArgumentType()
2964 if (getRecordArgABI(Ty, getCXXABI()) == CGCXXABI::RAA_Indirect) in classifyArgumentType()
2966 return getIndirectResult(Ty, freeIntRegs); in classifyArgumentType()
2979 ResType = GetINTEGERTypeAtOffset(CGT.ConvertType(Ty), 0, Ty, 0); in classifyArgumentType()
2985 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
2986 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
2988 if (Ty->isIntegralOrEnumerationType() && in classifyArgumentType()
2989 Ty->isPromotableIntegerType()) in classifyArgumentType()
2999 llvm::Type *IRType = CGT.ConvertType(Ty); in classifyArgumentType()
3000 ResType = GetSSETypeAtOffset(IRType, 0, Ty, 0); in classifyArgumentType()
3021 HighPart = GetINTEGERTypeAtOffset(CGT.ConvertType(Ty), 8, Ty, 8); in classifyArgumentType()
3031 HighPart = GetSSETypeAtOffset(CGT.ConvertType(Ty), 8, Ty, 8); in classifyArgumentType()
3044 ResType = GetByteVectorType(Ty); in classifyArgumentType()
3100 Address VAListAddr, QualType Ty) { in EmitX86_64VAArgFromMemory() argument
3110 CharUnits Align = CGF.getContext().getTypeAlignInChars(Ty); in EmitX86_64VAArgFromMemory()
3117 llvm::Type *LTy = CGF.ConvertTypeForMem(Ty); in EmitX86_64VAArgFromMemory()
3127 uint64_t SizeInBytes = (CGF.getContext().getTypeSize(Ty) + 7) / 8; in EmitX86_64VAArgFromMemory()
3139 QualType Ty) const { in EmitVAArg()
3149 Ty = getContext().getCanonicalType(Ty); in EmitVAArg()
3150 ABIArgInfo AI = classifyArgumentType(Ty, 0, neededInt, neededSSE, in EmitVAArg()
3156 return EmitX86_64VAArgFromMemory(CGF, VAListAddr, Ty); in EmitVAArg()
3211 llvm::Type *LTy = CGF.ConvertTypeForMem(Ty); in EmitVAArg()
3221 Address Tmp = CGF.CreateMemTemp(Ty); in EmitVAArg()
3257 getContext().getTypeInfoInChars(Ty); in EmitVAArg()
3264 Address Tmp = CGF.CreateMemTemp(Ty); in EmitVAArg()
3289 Address Tmp = CGF.CreateMemTemp(Ty); in EmitVAArg()
3321 Address MemAddr = EmitX86_64VAArgFromMemory(CGF, VAListAddr, Ty); in EmitVAArg()
3332 QualType Ty) const { in EmitMSVAArg()
3333 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*indirect*/ false, in EmitMSVAArg()
3334 CGF.getContext().getTypeInfoInChars(Ty), in EmitMSVAArg()
3339 ABIArgInfo WinX86_64ABIInfo::classify(QualType Ty, unsigned &FreeSSERegs, in classify() argument
3342 if (Ty->isVoidType()) in classify()
3345 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classify()
3346 Ty = EnumTy->getDecl()->getIntegerType(); in classify()
3348 TypeInfo Info = getContext().getTypeInfo(Ty); in classify()
3352 const RecordType *RT = Ty->getAs<RecordType>(); in classify()
3356 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classify()
3360 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classify()
3368 if (FreeSSERegs && isHomogeneousAggregate(Ty, Base, NumElts)) { in classify()
3371 if (IsReturnType || Ty->isBuiltinType() || Ty->isVectorType()) in classify()
3379 if (Ty->isMemberPointerType()) { in classify()
3382 llvm::Type *LLTy = CGT.ConvertType(Ty); in classify()
3387 if (RT || Ty->isAnyComplexType() || Ty->isMemberPointerType()) { in classify()
3391 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classify()
3399 const BuiltinType *BT = Ty->getAs<BuiltinType>(); in classify()
3430 QualType Ty) const { in EmitVAArg()
3431 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*indirect*/ false, in EmitVAArg()
3432 CGF.getContext().getTypeInfoInChars(Ty), in EmitVAArg()
3447 QualType Ty) const override;
3467 QualType Ty) const { in EmitVAArg()
3468 if (const ComplexType *CTy = Ty->getAs<ComplexType>()) { in EmitVAArg()
3482 bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64; in EmitVAArg()
3484 Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType(); in EmitVAArg()
3485 bool isF64 = Ty->isFloatingType() && getContext().getTypeSize(Ty) == 64; in EmitVAArg()
3489 bool isIndirect = Ty->isAggregateType(); in EmitVAArg()
3518 llvm::Type *DirectTy = CGF.ConvertType(Ty); in EmitVAArg()
3567 auto TypeInfo = CGF.getContext().getTypeInfoInChars(Ty); in EmitVAArg()
3578 CharUnits Align = CGF.getContext().getTypeAlignInChars(Ty); in EmitVAArg()
3602 getContext().getTypeAlignInChars(Ty)); in EmitVAArg()
3667 bool IsQPXVectorTy(const Type *Ty) const { in IsQPXVectorTy()
3671 if (const VectorType *VT = Ty->getAs<VectorType>()) { in IsQPXVectorTy()
3677 if (getContext().getTypeSize(Ty) <= 256) in IsQPXVectorTy()
3681 if (getContext().getTypeSize(Ty) <= 128) in IsQPXVectorTy()
3689 bool IsQPXVectorTy(QualType Ty) const { in IsQPXVectorTy()
3690 return IsQPXVectorTy(Ty.getTypePtr()); in IsQPXVectorTy()
3697 bool isPromotableTypeForABI(QualType Ty) const;
3698 CharUnits getParamTypeAlignment(QualType Ty) const;
3701 ABIArgInfo classifyArgumentType(QualType Ty) const;
3703 bool isHomogeneousAggregateBaseType(QualType Ty) const override;
3704 bool isHomogeneousAggregateSmallEnough(const Type *Ty,
3736 QualType Ty) const override;
3773 PPC64_SVR4_ABIInfo::isPromotableTypeForABI(QualType Ty) const { in isPromotableTypeForABI()
3775 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in isPromotableTypeForABI()
3776 Ty = EnumTy->getDecl()->getIntegerType(); in isPromotableTypeForABI()
3779 if (Ty->isPromotableIntegerType()) in isPromotableTypeForABI()
3784 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) in isPromotableTypeForABI()
3798 CharUnits PPC64_SVR4_ABIInfo::getParamTypeAlignment(QualType Ty) const { in getParamTypeAlignment()
3800 if (const ComplexType *CTy = Ty->getAs<ComplexType>()) in getParamTypeAlignment()
3801 Ty = CTy->getElementType(); in getParamTypeAlignment()
3805 if (IsQPXVectorTy(Ty)) { in getParamTypeAlignment()
3806 if (getContext().getTypeSize(Ty) > 128) in getParamTypeAlignment()
3810 } else if (Ty->isVectorType()) { in getParamTypeAlignment()
3811 return CharUnits::fromQuantity(getContext().getTypeSize(Ty) == 128 ? 16 : 8); in getParamTypeAlignment()
3817 const Type *EltType = isSingleElementStruct(Ty, getContext()); in getParamTypeAlignment()
3830 isAggregateTypeForABI(Ty) && isHomogeneousAggregate(Ty, Base, Members)) in getParamTypeAlignment()
3845 if (isAggregateTypeForABI(Ty) && getContext().getTypeAlign(Ty) >= 128) { in getParamTypeAlignment()
3846 if (HasQPX && getContext().getTypeAlign(Ty) >= 256) in getParamTypeAlignment()
3857 bool ABIInfo::isHomogeneousAggregate(QualType Ty, const Type *&Base, in isHomogeneousAggregate() argument
3859 if (const ConstantArrayType *AT = getContext().getAsConstantArrayType(Ty)) { in isHomogeneousAggregate()
3866 } else if (const RecordType *RT = Ty->getAs<RecordType>()) { in isHomogeneousAggregate()
3918 getContext().getTypeSize(Ty)) in isHomogeneousAggregate()
3922 if (const ComplexType *CT = Ty->getAs<ComplexType>()) { in isHomogeneousAggregate()
3924 Ty = CT->getElementType(); in isHomogeneousAggregate()
3928 if (!isHomogeneousAggregateBaseType(Ty)) in isHomogeneousAggregate()
3934 const Type *TyPtr = Ty.getTypePtr(); in isHomogeneousAggregate()
3945 bool PPC64_SVR4_ABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const { in isHomogeneousAggregateBaseType()
3948 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in isHomogeneousAggregateBaseType()
3954 if (const VectorType *VT = Ty->getAs<VectorType>()) { in isHomogeneousAggregateBaseType()
3955 if (getContext().getTypeSize(VT) == 128 || IsQPXVectorTy(Ty)) in isHomogeneousAggregateBaseType()
3973 PPC64_SVR4_ABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
3974 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
3976 if (Ty->isAnyComplexType()) in classifyArgumentType()
3981 if (Ty->isVectorType() && !IsQPXVectorTy(Ty)) { in classifyArgumentType()
3982 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
3984 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
3991 if (isAggregateTypeForABI(Ty)) { in classifyArgumentType()
3992 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
3993 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
3995 uint64_t ABIAlign = getParamTypeAlignment(Ty).getQuantity(); in classifyArgumentType()
3996 uint64_t TyAlign = getContext().getTypeAlignInChars(Ty).getQuantity(); in classifyArgumentType()
4002 isHomogeneousAggregate(Ty, Base, Members)) { in classifyArgumentType()
4012 uint64_t Bits = getContext().getTypeSize(Ty); in classifyArgumentType()
4039 return (isPromotableTypeForABI(Ty) ? in classifyArgumentType()
4100 QualType Ty) const { in EmitVAArg()
4101 auto TypeInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
4102 TypeInfo.second = getParamTypeAlignment(Ty); in EmitVAArg()
4112 if (const ComplexType *CTy = Ty->getAs<ComplexType>()) { in EmitVAArg()
4136 Address Temp = CGF.CreateMemTemp(Ty, "vacplx"); in EmitVAArg()
4137 CGF.EmitStoreOfComplex({Real, Imag}, CGF.MakeAddrLValue(Temp, Ty), in EmitVAArg()
4144 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*Indirect*/ false, in EmitVAArg()
4229 bool isHomogeneousAggregateBaseType(QualType Ty) const override;
4230 bool isHomogeneousAggregateSmallEnough(const Type *Ty,
4233 bool isIllegalVectorType(QualType Ty) const;
4243 Address EmitDarwinVAArg(Address VAListAddr, QualType Ty,
4246 Address EmitAAPCSVAArg(Address VAListAddr, QualType Ty,
4250 QualType Ty) const override { in EmitVAArg()
4251 return isDarwinPCS() ? EmitDarwinVAArg(VAListAddr, Ty, CGF) in EmitVAArg()
4252 : EmitAAPCSVAArg(VAListAddr, Ty, CGF); in EmitVAArg()
4273 ABIArgInfo AArch64ABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
4274 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
4277 if (isIllegalVectorType(Ty)) { in classifyArgumentType()
4278 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
4298 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
4301 if (!isAggregateTypeForABI(Ty)) { in classifyArgumentType()
4303 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
4304 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
4306 return (Ty->isPromotableIntegerType() && isDarwinPCS() in classifyArgumentType()
4313 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) { in classifyArgumentType()
4314 return getNaturalAlignIndirect(Ty, /*ByVal=*/RAA == in classifyArgumentType()
4320 if (isEmptyRecord(getContext(), Ty, true)) { in classifyArgumentType()
4330 if (isHomogeneousAggregate(Ty, Base, Members)) { in classifyArgumentType()
4336 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
4339 return coerceToIntArray(Ty, getContext(), getVMContext()); in classifyArgumentType()
4341 unsigned Alignment = getContext().getTypeAlign(Ty); in classifyArgumentType()
4353 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
4405 bool AArch64ABIInfo::isIllegalVectorType(QualType Ty) const { in isIllegalVectorType()
4406 if (const VectorType *VT = Ty->getAs<VectorType>()) { in isIllegalVectorType()
4418 bool AArch64ABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const { in isHomogeneousAggregateBaseType()
4423 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in isHomogeneousAggregateBaseType()
4426 } else if (const VectorType *VT = Ty->getAs<VectorType>()) { in isHomogeneousAggregateBaseType()
4440 QualType Ty, in EmitAAPCSVAArg() argument
4442 ABIArgInfo AI = classifyArgumentType(Ty); in EmitAAPCSVAArg()
4445 llvm::Type *BaseTy = CGF.ConvertType(Ty); in EmitAAPCSVAArg()
4474 auto TyInfo = getContext().getTypeInfoInChars(Ty); in EmitAAPCSVAArg()
4566 llvm::Type *MemTy = CGF.ConvertTypeForMem(Ty); in EmitAAPCSVAArg()
4576 bool IsHFA = isHomogeneousAggregate(Ty, Base, NumMembers); in EmitAAPCSVAArg()
4615 (IsHFA || !isAggregateTypeForABI(Ty)) && in EmitAAPCSVAArg()
4669 if (CGF.CGM.getDataLayout().isBigEndian() && !isAggregateTypeForABI(Ty) && in EmitAAPCSVAArg()
4694 Address AArch64ABIInfo::EmitDarwinVAArg(Address VAListAddr, QualType Ty, in EmitDarwinVAArg() argument
4699 if (!isAggregateTypeForABI(Ty) && !isIllegalVectorType(Ty)) in EmitDarwinVAArg()
4705 if (isEmptyRecord(getContext(), Ty, true)) { in EmitDarwinVAArg()
4707 Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty)); in EmitDarwinVAArg()
4713 auto TyInfo = getContext().getTypeInfoInChars(Ty); in EmitDarwinVAArg()
4721 IsIndirect = !isHomogeneousAggregate(Ty, Base, Members); in EmitDarwinVAArg()
4724 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, in EmitDarwinVAArg()
4784 bool isIllegalVectorType(QualType Ty) const;
4786 bool isHomogeneousAggregateBaseType(QualType Ty) const override;
4787 bool isHomogeneousAggregateSmallEnough(const Type *Ty,
4793 QualType Ty) const override;
4967 ABIArgInfo ARMABIInfo::classifyArgumentType(QualType Ty, in classifyArgumentType() argument
4978 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
4981 if (isIllegalVectorType(Ty)) { in classifyArgumentType()
4982 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
4998 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
5004 if (Ty->isHalfType() && !getContext().getLangOpts().HalfArgsAndReturns) { in classifyArgumentType()
5011 if (!isAggregateTypeForABI(Ty)) { in classifyArgumentType()
5013 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) { in classifyArgumentType()
5014 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
5017 return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend() in classifyArgumentType()
5021 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) { in classifyArgumentType()
5022 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
5026 if (isEmptyRecord(getContext(), Ty, true)) in classifyArgumentType()
5034 if (isHomogeneousAggregate(Ty, Base, Members)) { in classifyArgumentType()
5045 if (isHomogeneousAggregate(Ty, Base, Members)) { in classifyArgumentType()
5047 llvm::Type *Ty = in classifyArgumentType() local
5049 return ABIArgInfo::getDirect(Ty, 0, nullptr, false); in classifyArgumentType()
5054 getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(16)) { in classifyArgumentType()
5059 CharUnits::fromQuantity(getContext().getTypeAlign(Ty) / 8), false); in classifyArgumentType()
5067 uint64_t TyAlign = getContext().getTypeAlign(Ty) / 8; in classifyArgumentType()
5072 if (getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(64)) { in classifyArgumentType()
5080 return coerceToIntArray(Ty, getContext(), getVMContext()); in classifyArgumentType()
5088 if (getContext().getTypeAlign(Ty) <= 32) { in classifyArgumentType()
5090 SizeRegs = (getContext().getTypeSize(Ty) + 31) / 32; in classifyArgumentType()
5093 SizeRegs = (getContext().getTypeSize(Ty) + 63) / 64; in classifyArgumentType()
5099 static bool isIntegerLikeType(QualType Ty, ASTContext &Context, in isIntegerLikeType() argument
5105 uint64_t Size = Context.getTypeSize(Ty); in isIntegerLikeType()
5112 if (Ty->isVectorType()) in isIntegerLikeType()
5116 if (Ty->isRealFloatingType()) in isIntegerLikeType()
5120 if (Ty->getAs<BuiltinType>() || Ty->isPointerType()) in isIntegerLikeType()
5124 if (const ComplexType *CT = Ty->getAs<ComplexType>()) in isIntegerLikeType()
5131 const RecordType *RT = Ty->getAs<RecordType>(); in isIntegerLikeType()
5288 bool ARMABIInfo::isIllegalVectorType(QualType Ty) const { in isIllegalVectorType()
5289 if (const VectorType *VT = Ty->getAs<VectorType> ()) { in isIllegalVectorType()
5314 bool ARMABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const { in isHomogeneousAggregateBaseType()
5317 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in isHomogeneousAggregateBaseType()
5322 } else if (const VectorType *VT = Ty->getAs<VectorType>()) { in isHomogeneousAggregateBaseType()
5336 QualType Ty) const { in EmitVAArg()
5340 if (isEmptyRecord(getContext(), Ty, true)) { in EmitVAArg()
5342 Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty)); in EmitVAArg()
5346 auto TyInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
5353 if (TyInfo.first > CharUnits::fromQuantity(16) && isIllegalVectorType(Ty)) { in EmitVAArg()
5360 !isHomogeneousAggregate(Ty, Base, Members)) { in EmitVAArg()
5380 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, TyInfo, in EmitVAArg()
5395 ABIArgInfo classifyArgumentType(QualType Ty) const;
5399 QualType Ty) const override;
5431 ABIArgInfo NVPTXABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
5433 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
5434 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
5437 if (isAggregateTypeForABI(Ty)) in classifyArgumentType()
5438 return getNaturalAlignIndirect(Ty, /* byval */ true); in classifyArgumentType()
5440 return (Ty->isPromotableIntegerType() ? in classifyArgumentType()
5458 QualType Ty) const { in EmitVAArg()
5543 bool isPromotableIntegerType(QualType Ty) const;
5544 bool isCompoundType(QualType Ty) const;
5545 bool isVectorArgumentType(QualType Ty) const;
5546 bool isFPArgumentType(QualType Ty) const;
5547 QualType GetSingleElementType(QualType Ty) const;
5560 QualType Ty) const override;
5571 bool SystemZABIInfo::isPromotableIntegerType(QualType Ty) const { in isPromotableIntegerType()
5573 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in isPromotableIntegerType()
5574 Ty = EnumTy->getDecl()->getIntegerType(); in isPromotableIntegerType()
5577 if (Ty->isPromotableIntegerType()) in isPromotableIntegerType()
5581 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) in isPromotableIntegerType()
5592 bool SystemZABIInfo::isCompoundType(QualType Ty) const { in isCompoundType()
5593 return (Ty->isAnyComplexType() || in isCompoundType()
5594 Ty->isVectorType() || in isCompoundType()
5595 isAggregateTypeForABI(Ty)); in isCompoundType()
5598 bool SystemZABIInfo::isVectorArgumentType(QualType Ty) const { in isVectorArgumentType()
5600 Ty->isVectorType() && in isVectorArgumentType()
5601 getContext().getTypeSize(Ty) <= 128); in isVectorArgumentType()
5604 bool SystemZABIInfo::isFPArgumentType(QualType Ty) const { in isFPArgumentType()
5605 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) in isFPArgumentType()
5617 QualType SystemZABIInfo::GetSingleElementType(QualType Ty) const { in GetSingleElementType()
5618 if (const RecordType *RT = Ty->getAsStructureType()) { in GetSingleElementType()
5632 return Ty; in GetSingleElementType()
5648 return Ty; in GetSingleElementType()
5658 return Ty; in GetSingleElementType()
5662 QualType Ty) const { in EmitVAArg()
5674 Ty = getContext().getCanonicalType(Ty); in EmitVAArg()
5675 auto TyInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
5676 llvm::Type *ArgTy = CGF.ConvertTypeForMem(Ty); in EmitVAArg()
5678 ABIArgInfo AI = classifyArgumentType(Ty); in EmitVAArg()
5830 ABIArgInfo SystemZABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
5832 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
5833 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
5836 if (isPromotableIntegerType(Ty)) in classifyArgumentType()
5842 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
5843 QualType SingleElementTy = GetSingleElementType(Ty); in classifyArgumentType()
5850 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
5853 if (const RecordType *RT = Ty->getAs<RecordType>()) { in classifyArgumentType()
5858 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
5874 if (isCompoundType(Ty)) in classifyArgumentType()
5875 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyArgumentType()
5929 llvm::Type* HandleAggregates(QualType Ty, uint64_t TySize) const;
5941 QualType Ty) const override;
5942 bool shouldSignExtUnsignedType(QualType Ty) const override;
6016 llvm::Type* MipsABIInfo::HandleAggregates(QualType Ty, uint64_t TySize) const { in HandleAggregates() argument
6024 if (Ty->isComplexType()) in HandleAggregates()
6025 return CGT.ConvertType(Ty); in HandleAggregates()
6027 const RecordType *RT = Ty->getAs<RecordType>(); in HandleAggregates()
6047 const QualType Ty = i->getType(); in HandleAggregates() local
6048 const BuiltinType *BT = Ty->getAs<BuiltinType>(); in HandleAggregates()
6081 MipsABIInfo::classifyArgumentType(QualType Ty, uint64_t &Offset) const { in classifyArgumentType() argument
6082 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
6085 uint64_t TySize = getContext().getTypeSize(Ty); in classifyArgumentType()
6086 uint64_t Align = getContext().getTypeAlign(Ty) / 8; in classifyArgumentType()
6093 if (isAggregateTypeForABI(Ty) || Ty->isVectorType()) { in classifyArgumentType()
6098 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) { in classifyArgumentType()
6100 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
6107 ABIArgInfo::getDirect(HandleAggregates(Ty, TySize), 0, in classifyArgumentType()
6114 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
6115 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
6118 if (Ty->isIntegralOrEnumerationType()) in classifyArgumentType()
6219 QualType Ty = OrigTy; in EmitVAArg() local
6226 if ((Ty->isIntegerType() && in EmitVAArg()
6227 getContext().getIntWidth(Ty) < SlotSizeInBits) || in EmitVAArg()
6228 (Ty->isPointerType() && PtrWidth < SlotSizeInBits)) { in EmitVAArg()
6230 Ty = getContext().getIntTypeForBitwidth(SlotSizeInBits, in EmitVAArg()
6231 Ty->isSignedIntegerType()); in EmitVAArg()
6234 auto TyInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
6244 Address Addr = emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*indirect*/ false, in EmitVAArg()
6268 bool MipsABIInfo::shouldSignExtUnsignedType(QualType Ty) const { in shouldSignExtUnsignedType()
6269 int TySize = getContext().getTypeSize(Ty); in shouldSignExtUnsignedType()
6272 if (Ty->isUnsignedIntegerOrEnumerationType() && TySize == 32) in shouldSignExtUnsignedType()
6388 QualType Ty) const override;
6410 ABIArgInfo HexagonABIInfo::classifyArgumentType(QualType Ty) const { in classifyArgumentType()
6411 if (!isAggregateTypeForABI(Ty)) { in classifyArgumentType()
6413 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyArgumentType()
6414 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
6416 return (Ty->isPromotableIntegerType() ? in classifyArgumentType()
6421 if (isEmptyRecord(getContext(), Ty, true)) in classifyArgumentType()
6424 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyArgumentType()
6425 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
6427 uint64_t Size = getContext().getTypeSize(Ty); in classifyArgumentType()
6429 return getNaturalAlignIndirect(Ty, /*ByVal=*/true); in classifyArgumentType()
6479 QualType Ty) const { in EmitVAArg()
6481 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*indirect*/ false, in EmitVAArg()
6482 getContext().getTypeInfoInChars(Ty), in EmitVAArg()
6562 QualType Ty) const override;
6612 void addFloat(uint64_t Offset, llvm::Type *Ty, unsigned Bits) { in addFloat()
6620 Elems.push_back(Ty); in addFloat()
6657 bool isUsableType(llvm::StructType *Ty) const { in isUsableType()
6658 return llvm::makeArrayRef(Elems) == Ty->elements(); in isUsableType()
6673 SparcV9ABIInfo::classifyType(QualType Ty, unsigned SizeLimit) const { in classifyType() argument
6674 if (Ty->isVoidType()) in classifyType()
6677 uint64_t Size = getContext().getTypeSize(Ty); in classifyType()
6682 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in classifyType()
6685 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) in classifyType()
6686 Ty = EnumTy->getDecl()->getIntegerType(); in classifyType()
6689 if (Size < 64 && Ty->isIntegerType()) in classifyType()
6693 if (!isAggregateTypeForABI(Ty)) in classifyType()
6698 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) in classifyType()
6699 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyType()
6703 llvm::StructType *StrTy = dyn_cast<llvm::StructType>(CGT.ConvertType(Ty)); in classifyType()
6721 QualType Ty) const { in EmitVAArg()
6722 ABIArgInfo AI = classifyType(Ty, 16 * 8); in EmitVAArg()
6723 llvm::Type *ArgTy = CGT.ConvertType(Ty); in EmitVAArg()
6733 auto TypeInfo = getContext().getTypeInfoInChars(Ty); in EmitVAArg()
6933 QualType Ty) const override;
6948 QualType Ty) const { in EmitVAArg()
6956 ABIArgInfo AI = classifyArgumentType(Ty); in EmitVAArg()
6957 CharUnits TypeAlign = getContext().getTypeAlignInChars(Ty); in EmitVAArg()
6958 llvm::Type *ArgTy = CGT.ConvertType(Ty); in EmitVAArg()