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

Declarations

tools/clang/include/clang/CodeGen/SwiftCallingConv.h
   35 class ABIArgInfo;
tools/clang/lib/CodeGen/ABIInfo.h
   30   class ABIArgInfo;

References

tools/clang/include/clang/CodeGen/CGFunctionInfo.h
  119   static ABIArgInfo getDirect(llvm::Type *T = nullptr, unsigned Offset = 0,
  122     auto AI = ABIArgInfo(Direct);
  129   static ABIArgInfo getDirectInReg(llvm::Type *T = nullptr) {
  130     auto AI = getDirect(T);
  135   static ABIArgInfo getSignExtend(QualType Ty, llvm::Type *T = nullptr) {
  137     auto AI = ABIArgInfo(Extend);
  145   static ABIArgInfo getZeroExtend(QualType Ty, llvm::Type *T = nullptr) {
  147     auto AI = ABIArgInfo(Extend);
  157   static ABIArgInfo getExtend(QualType Ty, llvm::Type *T = nullptr) {
  164   static ABIArgInfo getExtendInReg(QualType Ty, llvm::Type *T = nullptr) {
  165     auto AI = getExtend(Ty, T);
  169   static ABIArgInfo getIgnore() {
  172   static ABIArgInfo getIndirect(CharUnits Alignment, bool ByVal = true,
  175     auto AI = ABIArgInfo(Indirect);
  183   static ABIArgInfo getIndirectInReg(CharUnits Alignment, bool ByVal = true,
  185     auto AI = getIndirect(Alignment, ByVal, Realign);
  189   static ABIArgInfo getInAlloca(unsigned FieldIndex) {
  190     auto AI = ABIArgInfo(InAlloca);
  194   static ABIArgInfo getExpand() {
  195     auto AI = ABIArgInfo(Expand);
  199   static ABIArgInfo getExpandWithPadding(bool PaddingInReg,
  201     auto AI = getExpand();
  210   static ABIArgInfo getCoerceAndExpand(llvm::StructType *coerceToType,
  240     auto AI = ABIArgInfo(CoerceAndExpand);
  472   ABIArgInfo info;
  634   ABIArgInfo &getReturnInfo() { return getArgsBuffer()[0].info; }
  635   const ABIArgInfo &getReturnInfo() const { return getArgsBuffer()[0].info; }
tools/clang/include/clang/CodeGen/SwiftCallingConv.h
  168 ABIArgInfo classifyReturnType(CodeGenModule &CGM, CanQualType type);
  171 ABIArgInfo classifyArgumentType(CodeGenModule &CGM, CanQualType type);
tools/clang/lib/CodeGen/ABIInfo.h
  107     CodeGen::ABIArgInfo
  112     CodeGen::ABIArgInfo
tools/clang/lib/CodeGen/CGCall.cpp
  781   ABIArgInfo &retInfo = FI->getReturnInfo();
 1344                                    const ABIArgInfo &info) {
 1428   const ABIArgInfo &RetAI = FI.getReturnInfo();
 1430   if (RetAI.getKind() == ABIArgInfo::Indirect) {
 1441     const ABIArgInfo &AI = I->info;
 1449     case ABIArgInfo::Extend:
 1450     case ABIArgInfo::Direct: {
 1460     case ABIArgInfo::Indirect:
 1463     case ABIArgInfo::Ignore:
 1464     case ABIArgInfo::InAlloca:
 1468     case ABIArgInfo::CoerceAndExpand:
 1471     case ABIArgInfo::Expand:
 1498   const auto &RI = FI.getReturnInfo();
 1548   const ABIArgInfo &retAI = FI.getReturnInfo();
 1550   case ABIArgInfo::Expand:
 1553   case ABIArgInfo::Extend:
 1554   case ABIArgInfo::Direct:
 1558   case ABIArgInfo::InAlloca:
 1570   case ABIArgInfo::Indirect:
 1571   case ABIArgInfo::Ignore:
 1575   case ABIArgInfo::CoerceAndExpand:
 1604     const ABIArgInfo &ArgInfo = it->info;
 1615     case ABIArgInfo::Ignore:
 1616     case ABIArgInfo::InAlloca:
 1620     case ABIArgInfo::Indirect: {
 1629     case ABIArgInfo::Extend:
 1630     case ABIArgInfo::Direct: {
 1646     case ABIArgInfo::CoerceAndExpand: {
 1655     case ABIArgInfo::Expand:
 1959   const ABIArgInfo &RetAI = FI.getReturnInfo();
 1961   case ABIArgInfo::Extend:
 1967   case ABIArgInfo::Direct:
 1971   case ABIArgInfo::Ignore:
 1974   case ABIArgInfo::InAlloca:
 1975   case ABIArgInfo::Indirect: {
 1982   case ABIArgInfo::CoerceAndExpand:
 1985   case ABIArgInfo::Expand:
 2026     const ABIArgInfo &AI = I->info;
 2043     case ABIArgInfo::Extend:
 2049     case ABIArgInfo::Direct:
 2056     case ABIArgInfo::Indirect: {
 2087     case ABIArgInfo::Ignore:
 2088     case ABIArgInfo::Expand:
 2089     case ABIArgInfo::CoerceAndExpand:
 2092     case ABIArgInfo::InAlloca:
 2288     const ABIArgInfo &ArgI = info_it->info;
 2303     case ABIArgInfo::InAlloca: {
 2312     case ABIArgInfo::Indirect: {
 2348     case ABIArgInfo::Extend:
 2349     case ABIArgInfo::Direct: {
 2512     case ABIArgInfo::CoerceAndExpand: {
 2523         if (ABIArgInfo::isPaddingForCoerceAndExpand(eltType))
 2534     case ABIArgInfo::Expand: {
 2552     case ABIArgInfo::Ignore:
 2817   const ABIArgInfo &RetAI = FI.getReturnInfo();
 2820   case ABIArgInfo::InAlloca:
 2834   case ABIArgInfo::Indirect: {
 2858   case ABIArgInfo::Extend:
 2859   case ABIArgInfo::Direct:
 2917   case ABIArgInfo::Ignore:
 2920   case ABIArgInfo::CoerceAndExpand: {
 2928       if (ABIArgInfo::isPaddingForCoerceAndExpand(coercedEltType))
 2953   case ABIArgInfo::Expand:
 3792   const ABIArgInfo &RetAI = CallInfo.getReturnInfo();
 3893     const ABIArgInfo &ArgInfo = info_it->info;
 3904     case ABIArgInfo::InAlloca: {
 3936     case ABIArgInfo::Indirect: {
 4027     case ABIArgInfo::Ignore:
 4031     case ABIArgInfo::Extend:
 4032     case ABIArgInfo::Direct: {
 4132     case ABIArgInfo::CoerceAndExpand: {
 4168         if (ABIArgInfo::isPaddingForCoerceAndExpand(eltType)) continue;
 4182     case ABIArgInfo::Expand:
 4469     case ABIArgInfo::CoerceAndExpand: {
 4481         if (ABIArgInfo::isPaddingForCoerceAndExpand(eltType)) continue;
 4494     case ABIArgInfo::InAlloca:
 4495     case ABIArgInfo::Indirect: {
 4502     case ABIArgInfo::Ignore:
 4507     case ABIArgInfo::Extend:
 4508     case ABIArgInfo::Direct: {
 4555     case ABIArgInfo::Expand:
tools/clang/lib/CodeGen/CGClass.cpp
 2851       calleeFnInfo.getReturnInfo().getKind() == ABIArgInfo::Indirect &&
tools/clang/lib/CodeGen/CGStmt.cpp
 2127     const ABIArgInfo &RetAI = CurFnInfo->getReturnInfo();
tools/clang/lib/CodeGen/CGVTables.cpp
   59 static bool similar(const ABIArgInfo &infoL, CanQualType typeL,
   60                     const ABIArgInfo &infoR, CanQualType typeR) {
  365       CurFnInfo->getReturnInfo().getKind() == ABIArgInfo::Indirect)
  401   const ABIArgInfo &ThisAI = CurFnInfo->arg_begin()->info;
  403     const ABIArgInfo &RetAI = CurFnInfo->getReturnInfo();
tools/clang/lib/CodeGen/CodeGenFunction.cpp
  902   } else if (CurFnInfo->getReturnInfo().getKind() == ABIArgInfo::Indirect) {
  916   } else if (CurFnInfo->getReturnInfo().getKind() == ABIArgInfo::InAlloca &&
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
 1155     FI.getReturnInfo() = ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
 1098     FI.getReturnInfo() = ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
tools/clang/lib/CodeGen/SwiftCallingConv.cpp
  784 static ABIArgInfo classifyExpandedType(SwiftAggLowering &lowering,
  788     return ABIArgInfo::getIgnore();
  790     return ABIArgInfo::getIndirect(alignmentForIndirect, /*byval*/ false);
  793     return ABIArgInfo::getCoerceAndExpand(types.first, types.second);
  797 static ABIArgInfo classifyType(CodeGenModule &CGM, CanQualType type,
  804       return ABIArgInfo::getIndirect(layout.getAlignment(), /*byval*/ false);
  816     return (forReturn ? ABIArgInfo::getDirect() : ABIArgInfo::getExpand());
  816     return (forReturn ? ABIArgInfo::getDirect() : ABIArgInfo::getExpand());
  835     return ABIArgInfo::getIgnore();
  839   return ABIArgInfo::getDirect();
  842 ABIArgInfo swiftcall::classifyReturnType(CodeGenModule &CGM, CanQualType type) {
  846 ABIArgInfo swiftcall::classifyArgumentType(CodeGenModule &CGM,
  852   auto &retInfo = FI.getReturnInfo();
tools/clang/lib/CodeGen/TargetInfo.cpp
   50 static ABIArgInfo coerceToIntArray(QualType Ty,
   58   return ABIArgInfo::getDirect(llvm::ArrayType::get(IntType, NumElements));
   79 ABIArgInfo
   82   return ABIArgInfo::getIndirect(getContext().getTypeAlignInChars(Ty),
   86 ABIArgInfo
   88   return ABIArgInfo::getIndirectInReg(getContext().getTypeAlignInChars(Ty),
  608                        const ABIArgInfo &AI) {
  663   ABIArgInfo classifyReturnType(QualType RetTy) const;
  664   ABIArgInfo classifyArgumentType(QualType RetTy) const;
  685 ABIArgInfo DefaultABIInfo::classifyArgumentType(QualType Ty) const {
  701   return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
  702                                         : ABIArgInfo::getDirect());
  705 ABIArgInfo DefaultABIInfo::classifyReturnType(QualType RetTy) const {
  707     return ABIArgInfo::getIgnore();
  716   return (RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
  717                                            : ABIArgInfo::getDirect());
  734   ABIArgInfo classifyReturnType(QualType RetTy) const;
  735   ABIArgInfo classifyArgumentType(QualType Ty) const;
  792 ABIArgInfo WebAssemblyABIInfo::classifyArgumentType(QualType Ty) const {
  802       return ABIArgInfo::getIgnore();
  807       return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
  814 ABIArgInfo WebAssemblyABIInfo::classifyReturnType(QualType RetTy) const {
  821         return ABIArgInfo::getIgnore();
  826         return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
  856   ABIArgInfo classifyReturnType(QualType RetTy) const;
  857   ABIArgInfo classifyArgumentType(QualType RetTy) const;
  886   return EmitVAArgInstr(CGF, VAListAddr, Ty, ABIArgInfo::getDirect());
  890 ABIArgInfo PNaClABIInfo::classifyArgumentType(QualType Ty) const {
  900     return ABIArgInfo::getDirect();
  903   return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
  904                                         : ABIArgInfo::getDirect());
  907 ABIArgInfo PNaClABIInfo::classifyReturnType(QualType RetTy) const {
  909     return ABIArgInfo::getIgnore();
  919   return (RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
  920                                            : ABIArgInfo::getDirect());
  979 static ABIArgInfo getDirectX86Hva(llvm::Type* T = nullptr) {
  980   auto AI = ABIArgInfo::getDirect(T);
  980   auto AI = ABIArgInfo::getDirect(T);
 1039   ABIArgInfo getIndirectResult(QualType Ty, bool ByVal, CCState &State) const;
 1041   ABIArgInfo getIndirectReturnResult(QualType Ty, CCState &State) const;
 1047   ABIArgInfo classifyReturnType(QualType RetTy, CCState &State) const;
 1048   ABIArgInfo classifyArgumentType(QualType RetTy, CCState &State) const;
 1065                            CharUnits &StackOffset, ABIArgInfo &Info,
 1368 ABIArgInfo X86_32ABIInfo::getIndirectReturnResult(QualType RetTy, CCState &State) const {
 1379 ABIArgInfo X86_32ABIInfo::classifyReturnType(QualType RetTy,
 1382     return ABIArgInfo::getIgnore();
 1390     return ABIArgInfo::getDirect();
 1402         return ABIArgInfo::getDirect(llvm::VectorType::get(
 1409         return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(),
 1415     return ABIArgInfo::getDirect();
 1431       return ABIArgInfo::getIgnore();
 1446           return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
 1450       return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(),Size));
 1460   return (RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
 1461                                            : ABIArgInfo::getDirect());
 1514 ABIArgInfo X86_32ABIInfo::getIndirectResult(QualType Ty, bool ByVal,
 1529     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true);
 1534   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(StackAlign),
 1632 ABIArgInfo X86_32ABIInfo::classifyArgumentType(QualType Ty,
 1646       return ABIArgInfo::getInAlloca(/*FieldIndex=*/0);
 1660         return ABIArgInfo::getDirect();
 1661       return ABIArgInfo::getExpand();
 1674       return ABIArgInfo::getIgnore();
 1685         return ABIArgInfo::getDirectInReg(Result);
 1687         return ABIArgInfo::getDirect(Result);
 1699       return ABIArgInfo::getExpandWithPadding(
 1715         return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(),
 1720       return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(), 64));
 1722     return ABIArgInfo::getDirect();
 1733       return ABIArgInfo::getExtendInReg(Ty);
 1734     return ABIArgInfo::getExtend(Ty);
 1738     return ABIArgInfo::getDirectInReg();
 1739   return ABIArgInfo::getDirect();
 1763         I.info = ABIArgInfo::getDirect();
 1767       UsedInAlloca |= (I.info.getKind() == ABIArgInfo::InAlloca);
 1789       UsedInAlloca |= (I.info.getKind() == ABIArgInfo::InAlloca);
 1834       UsedInAlloca |= (I.info.getKind() == ABIArgInfo::InAlloca);
 1846                                    CharUnits &StackOffset, ABIArgInfo &Info,
 1852   Info = ABIArgInfo::getInAlloca(FrameFields.size());
 1867 static bool isArgInAlloca(const ABIArgInfo &Info) {
 1870   case ABIArgInfo::InAlloca:
 1872   case ABIArgInfo::Indirect:
 1875   case ABIArgInfo::Ignore:
 1877   case ABIArgInfo::Direct:
 1878   case ABIArgInfo::Extend:
 1882   case ABIArgInfo::Expand:
 1883   case ABIArgInfo::CoerceAndExpand:
 1906   ABIArgInfo &Ret = FI.getReturnInfo();
 2135   ABIArgInfo getIndirectReturnResult(QualType Ty) const;
 2142   ABIArgInfo getIndirectResult(QualType Ty, unsigned freeIntRegs) const;
 2144   ABIArgInfo classifyReturnType(QualType RetTy) const;
 2146   ABIArgInfo classifyArgumentType(QualType Ty, unsigned freeIntRegs,
 2150   ABIArgInfo classifyRegCallStructType(QualType Ty, unsigned &NeededInt,
 2153   ABIArgInfo classifyRegCallStructTypeImpl(QualType Ty, unsigned &NeededInt,
 2208     ABIArgInfo info = classifyArgumentType(type, 0, neededInt, neededSSE,
 2271   ABIArgInfo classify(QualType Ty, unsigned &FreeSSERegs, bool IsReturnType,
 2273   ABIArgInfo reclassifyHvaArgType(QualType Ty, unsigned &FreeSSERegs,
 2274                                       const ABIArgInfo &current) const;
 2903 ABIArgInfo X86_64ABIInfo::getIndirectReturnResult(QualType Ty) const {
 2911     return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
 2912                                           : ABIArgInfo::getDirect());
 2934 ABIArgInfo X86_64ABIInfo::getIndirectResult(QualType Ty,
 2949     return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
 2950                                           : ABIArgInfo::getDirect());
 2987       return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(),
 2991   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(Align));
 3288 ABIArgInfo X86_64ABIInfo::
 3303       return ABIArgInfo::getIgnore();
 3333         return ABIArgInfo::getExtend(RetTy);
 3374       return ABIArgInfo::getDirect(HighPart, 8);
 3379       return ABIArgInfo::getDirect(HighPart, 8);
 3402         return ABIArgInfo::getDirect(HighPart, 8);
 3413   return ABIArgInfo::getDirect(ResType);
 3416 ABIArgInfo X86_64ABIInfo::classifyArgumentType(
 3437       return ABIArgInfo::getIgnore();
 3478         return ABIArgInfo::getExtend(Ty);
 3512       return ABIArgInfo::getDirect(HighPart, 8);
 3522       return ABIArgInfo::getDirect(HighPart, 8);
 3542   return ABIArgInfo::getDirect(ResType);
 3545 ABIArgInfo
 3590   return ABIArgInfo::getDirect();
 3593 ABIArgInfo X86_64ABIInfo::classifyRegCallStructType(QualType Ty,
 3731   ABIArgInfo AI = classifyArgumentType(Ty, 0, neededInt, neededSSE,
 3913 ABIArgInfo
 3915                                     const ABIArgInfo &current) const {
 3928 ABIArgInfo WinX86_64ABIInfo::classify(QualType Ty, unsigned &FreeSSERegs,
 3933     return ABIArgInfo::getIgnore();
 3964           return ABIArgInfo::getDirect();
 3965         return ABIArgInfo::getExpand();
 3967       return ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
 3972         return ABIArgInfo::getDirect();
 3974         return ABIArgInfo::getExpand();
 3977         return ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
 3987       return ABIArgInfo::getDirect();
 3997     return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(), Width));
 4005       return ABIArgInfo::getExtend(Ty);
 4013           return ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
 4023         return ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
 4027       return ABIArgInfo::getDirect(
 4035   return ABIArgInfo::getDirect();
 4429   ABIArgInfo classifyReturnType(QualType RetTy) const;
 4430   ABIArgInfo classifyArgumentType(QualType Ty) const;
 4456           I.info = ABIArgInfo::getDirectInReg(CGT.ConvertType(QT));
 4731 ABIArgInfo
 4736     return ABIArgInfo::getDirect();
 4746       return ABIArgInfo::getDirect(CoerceTy);
 4764       return ABIArgInfo::getDirect(CoerceTy);
 4789       return ABIArgInfo::getDirect(CoerceTy);
 4793     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(ABIAlign),
 4798   return (isPromotableTypeForABI(Ty) ? ABIArgInfo::getExtend(Ty)
 4799                                      : ABIArgInfo::getDirect());
 4802 ABIArgInfo
 4805     return ABIArgInfo::getIgnore();
 4808     return ABIArgInfo::getDirect();
 4818       return ABIArgInfo::getDirect(CoerceTy);
 4830       return ABIArgInfo::getDirect(CoerceTy);
 4837         return ABIArgInfo::getIgnore();
 4846       return ABIArgInfo::getDirect(CoerceTy);
 4853   return (isPromotableTypeForABI(RetTy) ? ABIArgInfo::getExtend(RetTy)
 4854                                         : ABIArgInfo::getDirect());
 4994   ABIArgInfo classifyReturnType(QualType RetTy) const;
 4995   ABIArgInfo classifyArgumentType(QualType RetTy) const;
 5107 ABIArgInfo AArch64ABIInfo::classifyArgumentType(QualType Ty) const {
 5116       return ABIArgInfo::getDirect(ResType);
 5120       return ABIArgInfo::getDirect(ResType);
 5125       return ABIArgInfo::getDirect(ResType);
 5130       return ABIArgInfo::getDirect(ResType);
 5141                 ? ABIArgInfo::getExtend(Ty)
 5142                 : ABIArgInfo::getDirect());
 5158       return ABIArgInfo::getIgnore();
 5163       return ABIArgInfo::getIgnore();
 5164     return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
 5171     return ABIArgInfo::getDirect(
 5195       return ABIArgInfo::getDirect(llvm::ArrayType::get(BaseTy, Size / 64));
 5197     return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(), Size));
 5203 ABIArgInfo AArch64ABIInfo::classifyReturnType(QualType RetTy) const {
 5205     return ABIArgInfo::getIgnore();
 5217                 ? ABIArgInfo::getExtend(RetTy)
 5218                 : ABIArgInfo::getDirect());
 5223     return ABIArgInfo::getIgnore();
 5229     return ABIArgInfo::getDirect();
 5245       return ABIArgInfo::getDirect(llvm::ArrayType::get(BaseTy, Size / 64));
 5247     return ABIArgInfo::getDirect(llvm::IntegerType::get(getVMContext(), Size));
 5302   ABIArgInfo AI = classifyArgumentType(Ty);
 5551     return EmitVAArgInstr(CGF, VAListAddr, Ty, ABIArgInfo::getDirect());
 5640   ABIArgInfo classifyReturnType(QualType RetTy, bool isVariadic,
 5642   ABIArgInfo classifyArgumentType(QualType RetTy, bool isVariadic,
 5644   ABIArgInfo classifyHomogeneousAggregate(QualType Ty, const Type *Base,
 5646   ABIArgInfo coerceIllegalVector(QualType Ty) const;
 5826 ABIArgInfo ARMABIInfo::coerceIllegalVector(QualType Ty) const {
 5831     return ABIArgInfo::getDirect(ResType);
 5836     return ABIArgInfo::getDirect(ResType);
 5841 ABIArgInfo ARMABIInfo::classifyHomogeneousAggregate(QualType Ty,
 5853       return ABIArgInfo::getDirect(Ty, 0, nullptr, false);
 5856   return ABIArgInfo::getDirect(nullptr, 0, nullptr, false);
 5859 ABIArgInfo ARMABIInfo::classifyArgumentType(QualType Ty, bool isVariadic,
 5886     return ABIArgInfo::getDirect(ResType);
 5895     return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
 5896                                           : ABIArgInfo::getDirect());
 5905     return ABIArgInfo::getIgnore();
 5924       return ABIArgInfo::getDirect(Ty, 0, nullptr, false);
 5933     return ABIArgInfo::getIndirect(
 5952     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(ABIAlign),
 5976   return ABIArgInfo::getDirect(llvm::ArrayType::get(ElemTy, SizeRegs));
 6064 ABIArgInfo ARMABIInfo::classifyReturnType(QualType RetTy, bool isVariadic,
 6072     return ABIArgInfo::getIgnore();
 6093     return ABIArgInfo::getDirect(ResType);
 6101     return RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
 6102                                             : ABIArgInfo::getDirect();
 6108       return ABIArgInfo::getIgnore();
 6115       return ABIArgInfo::getDirect(llvm::IntegerType::get(
 6123         return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
 6125         return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 6126       return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 6136     return ABIArgInfo::getIgnore();
 6157       return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 6161       return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
 6163       return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 6164     return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 6169     return ABIArgInfo::getDirect(CoerceTy);
 6344   ABIArgInfo classifyReturnType(QualType RetTy) const;
 6345   ABIArgInfo classifyArgumentType(QualType Ty) const;
 6398 static ABIArgInfo coerceToIntArrayWithLimit(QualType Ty, ASTContext &Context,
 6407   return ABIArgInfo::getDirect(llvm::ArrayType::get(IntType, NumElements));
 6410 ABIArgInfo NVPTXABIInfo::classifyReturnType(QualType RetTy) const {
 6412     return ABIArgInfo::getIgnore();
 6421     return ABIArgInfo::getDirect();
 6427   return (RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
 6428                                            : ABIArgInfo::getDirect());
 6431 ABIArgInfo NVPTXABIInfo::classifyArgumentType(QualType Ty) const {
 6440   return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
 6441                                         : ABIArgInfo::getDirect());
 6554   ABIArgInfo classifyReturnType(QualType RetTy) const;
 6555   ABIArgInfo classifyArgumentType(QualType ArgTy) const;
 6691   ABIArgInfo AI = classifyArgumentType(Ty);
 6829 ABIArgInfo SystemZABIInfo::classifyReturnType(QualType RetTy) const {
 6831     return ABIArgInfo::getIgnore();
 6833     return ABIArgInfo::getDirect();
 6836   return (isPromotableIntegerType(RetTy) ? ABIArgInfo::getExtend(RetTy)
 6837                                          : ABIArgInfo::getDirect());
 6840 ABIArgInfo SystemZABIInfo::classifyArgumentType(QualType Ty) const {
 6847     return ABIArgInfo::getExtend(Ty);
 6856     return ABIArgInfo::getDirect(CGT.ConvertType(SingleElementTy));
 6880     return ABIArgInfo::getDirect(PassTy);
 6887   return ABIArgInfo::getDirect(nullptr);
 6946   ABIArgInfo classifyReturnType(QualType RetTy) const;
 6947   ABIArgInfo classifyArgumentType(QualType RetTy, uint64_t &Offset) const;
 6951   ABIArgInfo extendType(QualType Ty) const;
 7104 ABIArgInfo
 7120       return ABIArgInfo::getIgnore();
 7130     ABIArgInfo ArgInfo =
 7131         ABIArgInfo::getDirect(HandleAggregates(Ty, TySize), 0,
 7145   return ABIArgInfo::getDirect(
 7191 ABIArgInfo MipsABIInfo::classifyReturnType(QualType RetTy) const {
 7195     return ABIArgInfo::getIgnore();
 7200     return ABIArgInfo::getIgnore();
 7205         return ABIArgInfo::getDirect();
 7211         ABIArgInfo ArgInfo =
 7212             ABIArgInfo::getDirect(returnAggregateInRegs(RetTy, Size));
 7226     return ABIArgInfo::getExtend(RetTy);
 7230     return ABIArgInfo::getSignExtend(RetTy);
 7232   return ABIArgInfo::getDirect();
 7236   ABIArgInfo &RetInfo = FI.getReturnInfo();
 7298 ABIArgInfo MipsABIInfo::extendType(QualType Ty) const {
 7303     return ABIArgInfo::getSignExtend(Ty);
 7305   return ABIArgInfo::getExtend(Ty);
 7441   ABIArgInfo classifyReturnType(QualType RetTy) const;
 7442   ABIArgInfo classifyArgumentType(QualType RetTy) const;
 7469 ABIArgInfo HexagonABIInfo::classifyArgumentType(QualType Ty) const {
 7475     return (Ty->isPromotableIntegerType() ? ABIArgInfo::getExtend(Ty)
 7476                                           : ABIArgInfo::getDirect());
 7484     return ABIArgInfo::getIgnore();
 7491       return ABIArgInfo::getDirect(llvm::Type::getInt64Ty(getVMContext()));
 7493       return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 7495       return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 7497       return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
 7500 ABIArgInfo HexagonABIInfo::classifyReturnType(QualType RetTy) const {
 7502     return ABIArgInfo::getIgnore();
 7513     return (RetTy->isPromotableIntegerType() ? ABIArgInfo::getExtend(RetTy)
 7514                                              : ABIArgInfo::getDirect());
 7518     return ABIArgInfo::getIgnore();
 7526       return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
 7528       return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 7530       return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 7531     return ABIArgInfo::getDirect(llvm::Type::getInt64Ty(getVMContext()));
 7573   ABIArgInfo getIndirectResult(QualType Ty, bool ByVal, CCState &State) const;
 7574   ABIArgInfo classifyArgumentType(QualType RetTy, CCState &State) const;
 7595 ABIArgInfo LanaiABIInfo::getIndirectResult(QualType Ty, bool ByVal,
 7608   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true,
 7613 ABIArgInfo LanaiABIInfo::classifyArgumentType(QualType Ty,
 7633       return ABIArgInfo::getIgnore();
 7642       return ABIArgInfo::getDirectInReg(Result);
 7656       return ABIArgInfo::getDirectInReg();
 7657     return ABIArgInfo::getExtend(Ty);
 7660     return ABIArgInfo::getDirectInReg();
 7661   return ABIArgInfo::getDirect();
 7692   ABIArgInfo classifyReturnType(QualType RetTy) const;
 7693   ABIArgInfo classifyKernelArgumentType(QualType Ty) const;
 7694   ABIArgInfo classifyArgumentType(QualType Ty, unsigned &NumRegsLeft) const;
 7767 ABIArgInfo AMDGPUABIInfo::classifyReturnType(QualType RetTy) const {
 7774         return ABIArgInfo::getIgnore();
 7778         return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
 7789         return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 7792         return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 7796         return ABIArgInfo::getDirect(llvm::ArrayType::get(I32Ty, 2));
 7800         return ABIArgInfo::getDirect();
 7810 ABIArgInfo AMDGPUABIInfo::classifyKernelArgumentType(QualType Ty) const {
 7817     return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
 7822   return ABIArgInfo::getDirect(nullptr, 0, nullptr, false);
 7825 ABIArgInfo AMDGPUABIInfo::classifyArgumentType(QualType Ty,
 7839       return ABIArgInfo::getIgnore();
 7845       return ABIArgInfo::getDirect(CGT.ConvertType(QualType(SeltTy, 0)));
 7860         return ABIArgInfo::getDirect(llvm::Type::getInt16Ty(getVMContext()));
 7863         return ABIArgInfo::getDirect(llvm::Type::getInt32Ty(getVMContext()));
 7867       return ABIArgInfo::getDirect(llvm::ArrayType::get(I32Ty, 2));
 7874         return ABIArgInfo::getDirect();
 7880   ABIArgInfo ArgInfo = DefaultABIInfo::classifyArgumentType(Ty);
 8127   ABIArgInfo classifyReturnType(QualType RetTy) const;
 8133 ABIArgInfo
 8136     return ABIArgInfo::getDirect();
 8190   ABIArgInfo classifyType(QualType RetTy, unsigned SizeLimit) const;
 8303 ABIArgInfo
 8306     return ABIArgInfo::getIgnore();
 8321     return ABIArgInfo::getExtend(Ty);
 8325     return ABIArgInfo::getDirect();
 8336     return ABIArgInfo::getDirect();
 8346     return ABIArgInfo::getDirectInReg(CoerceTy);
 8348     return ABIArgInfo::getDirect(CoerceTy);
 8353   ABIArgInfo AI = classifyType(Ty, 16 * 8);
 8369   case ABIArgInfo::Expand:
 8370   case ABIArgInfo::CoerceAndExpand:
 8371   case ABIArgInfo::InAlloca:
 8374   case ABIArgInfo::Extend: {
 8381   case ABIArgInfo::Direct: {
 8388   case ABIArgInfo::Indirect:
 8395   case ABIArgInfo::Ignore:
 8472   void updateState(const ABIArgInfo &Info, QualType Ty, CCState &State) const {
 8500   ABIArgInfo getIndirectByRef(QualType Ty, bool HasFreeRegs) const;
 8501   ABIArgInfo getIndirectByValue(QualType Ty) const;
 8502   ABIArgInfo classifyArgumentType(QualType Ty, uint8_t FreeRegs) const;
 8503   ABIArgInfo classifyReturnType(QualType RetTy) const;
 8513 ABIArgInfo ARCABIInfo::getIndirectByRef(QualType Ty, bool HasFreeRegs) const {
 8518 ABIArgInfo ARCABIInfo::getIndirectByValue(QualType Ty) const {
 8522   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true,
 8533 ABIArgInfo ARCABIInfo::classifyArgumentType(QualType Ty,
 8559       return ABIArgInfo::getIgnore();
 8568         ABIArgInfo::getDirectInReg(Result) :
 8569         ABIArgInfo::getDirect(Result, 0, nullptr, false);
 8573       (FreeRegs >= SizeInRegs ? ABIArgInfo::getExtendInReg(Ty) :
 8574                                 ABIArgInfo::getExtend(Ty)) :
 8575       (FreeRegs >= SizeInRegs ? ABIArgInfo::getDirectInReg() :
 8576                                 ABIArgInfo::getDirect());
 8579 ABIArgInfo ARCABIInfo::classifyReturnType(QualType RetTy) const {
 8581     return ABIArgInfo::getDirectInReg();
 8720   ABIArgInfo AI = classifyArgumentType(Ty);
 8730   case ABIArgInfo::Expand:
 8731   case ABIArgInfo::CoerceAndExpand:
 8732   case ABIArgInfo::InAlloca:
 8734   case ABIArgInfo::Ignore:
 8738   case ABIArgInfo::Extend:
 8739   case ABIArgInfo::Direct:
 8745   case ABIArgInfo::Indirect:
 9268   ABIArgInfo classifyArgumentType(QualType Ty, bool IsFixed, int &ArgGPRsLeft,
 9270   ABIArgInfo classifyReturnType(QualType RetTy) const;
 9275   ABIArgInfo extendType(QualType Ty) const;
 9281   ABIArgInfo coerceAndExpandFPCCEligibleStruct(llvm::Type *Field1Ty,
 9297   bool IsRetIndirect = FI.getReturnInfo().getKind() == ABIArgInfo::Indirect ||
 9465 ABIArgInfo RISCVABIInfo::coerceAndExpandFPCCEligibleStruct(
 9478     return ABIArgInfo::getCoerceAndExpand(
 9509   return ABIArgInfo::getCoerceAndExpand(CoerceToType, UnpaddedCoerceToType);
 9512 ABIArgInfo RISCVABIInfo::classifyArgumentType(QualType Ty, bool IsFixed,
 9529     return ABIArgInfo::getIgnore();
 9536     return ABIArgInfo::getDirect();
 9545       return ABIArgInfo::getDirect();
 9597     return ABIArgInfo::getDirect();
 9608       return ABIArgInfo::getDirect(
 9611       return ABIArgInfo::getDirect(
 9614       return ABIArgInfo::getDirect(llvm::ArrayType::get(
 9621 ABIArgInfo RISCVABIInfo::classifyReturnType(QualType RetTy) const {
 9623     return ABIArgInfo::getIgnore();
 9655 ABIArgInfo RISCVABIInfo::extendType(QualType Ty) const {
 9659     return ABIArgInfo::getSignExtend(Ty);
 9660   return ABIArgInfo::getExtend(Ty);