| 
    LLVM 22.0.0git
    
   | 
 
Class to represent function types. More...
#include "llvm/IR/DerivedTypes.h"
Public Types | |
| using | param_iterator = Type::subtype_iterator | 
| Public Types inherited from llvm::Type | |
| enum | TypeID {  HalfTyID = 0 , BFloatTyID , FloatTyID , DoubleTyID , X86_FP80TyID , FP128TyID , PPC_FP128TyID , VoidTyID , LabelTyID , MetadataTyID , X86_AMXTyID , TokenTyID , IntegerTyID , FunctionTyID , PointerTyID , StructTyID , ArrayTyID , FixedVectorTyID , ScalableVectorTyID , TypedPointerTyID , TargetExtTyID }  | 
| Definitions of all of the base types for the Type system.  More... | |
| using | subtype_iterator = Type * const * | 
| using | subtype_reverse_iterator = std::reverse_iterator<subtype_iterator> | 
Public Member Functions | |
| FunctionType (const FunctionType &)=delete | |
| FunctionType & | operator= (const FunctionType &)=delete | 
| bool | isVarArg () const | 
| Type * | getReturnType () const | 
| param_iterator | param_begin () const | 
| param_iterator | param_end () const | 
| ArrayRef< Type * > | params () const | 
| Type * | getParamType (unsigned i) const | 
| Parameter type accessors.   | |
| unsigned | getNumParams () const | 
| Return the number of fixed parameters this function type requires.   | |
| Public Member Functions inherited from llvm::Type | |
| LLVM_ABI void | print (raw_ostream &O, bool IsForDebug=false, bool NoDetails=false) const | 
| Print the current type.   | |
| LLVM_ABI void | dump () const | 
| LLVMContext & | getContext () const | 
| Return the LLVMContext in which this type was uniqued.   | |
| TypeID | getTypeID () const | 
| Return the type id for the type.   | |
| bool | isVoidTy () const | 
| Return true if this is 'void'.   | |
| bool | isHalfTy () const | 
| Return true if this is 'half', a 16-bit IEEE fp type.   | |
| bool | isBFloatTy () const | 
| Return true if this is 'bfloat', a 16-bit bfloat type.   | |
| bool | is16bitFPTy () const | 
| Return true if this is a 16-bit float type.   | |
| bool | isFloatTy () const | 
| Return true if this is 'float', a 32-bit IEEE fp type.   | |
| bool | isDoubleTy () const | 
| Return true if this is 'double', a 64-bit IEEE fp type.   | |
| bool | isX86_FP80Ty () const | 
| Return true if this is x86 long double.   | |
| bool | isFP128Ty () const | 
| Return true if this is 'fp128'.   | |
| bool | isPPC_FP128Ty () const | 
| Return true if this is powerpc long double.   | |
| bool | isIEEELikeFPTy () const | 
| Return true if this is a well-behaved IEEE-like type, which has a IEEE compatible layout, and does not have non-IEEE values, such as x86_fp80's unnormal values.   | |
| bool | isFloatingPointTy () const | 
| Return true if this is one of the floating-point types.   | |
| bool | isMultiUnitFPType () const | 
| Returns true if this is a floating-point type that is an unevaluated sum of multiple floating-point units.   | |
| LLVM_ABI const fltSemantics & | getFltSemantics () const | 
| bool | isX86_AMXTy () const | 
| Return true if this is X86 AMX.   | |
| bool | isTargetExtTy () const | 
| Return true if this is a target extension type.   | |
| LLVM_ABI bool | isScalableTargetExtTy () const | 
| Return true if this is a target extension type with a scalable layout.   | |
| LLVM_ABI bool | isScalableTy (SmallPtrSetImpl< const Type * > &Visited) const | 
| Return true if this is a type whose size is a known multiple of vscale.   | |
| LLVM_ABI bool | isScalableTy () const | 
| LLVM_ABI bool | containsNonGlobalTargetExtType (SmallPtrSetImpl< const Type * > &Visited) const | 
| Return true if this type is or contains a target extension type that disallows being used as a global.   | |
| LLVM_ABI bool | containsNonGlobalTargetExtType () const | 
| LLVM_ABI bool | containsNonLocalTargetExtType (SmallPtrSetImpl< const Type * > &Visited) const | 
| Return true if this type is or contains a target extension type that disallows being used as a local.   | |
| LLVM_ABI bool | containsNonLocalTargetExtType () const | 
| bool | isFPOrFPVectorTy () const | 
| Return true if this is a FP type or a vector of FP.   | |
| bool | isLabelTy () const | 
| Return true if this is 'label'.   | |
| bool | isMetadataTy () const | 
| Return true if this is 'metadata'.   | |
| bool | isTokenTy () const | 
| Return true if this is 'token'.   | |
| bool | isTokenLikeTy () const | 
| Returns true if this is 'token' or a token-like target type.s.   | |
| bool | isIntegerTy () const | 
| True if this is an instance of IntegerType.   | |
| LLVM_ABI bool | isIntegerTy (unsigned Bitwidth) const | 
| Return true if this is an IntegerType of the given width.   | |
| bool | isIntOrIntVectorTy () const | 
| Return true if this is an integer type or a vector of integer types.   | |
| bool | isIntOrIntVectorTy (unsigned BitWidth) const | 
| Return true if this is an integer type or a vector of integer types of the given width.   | |
| bool | isIntOrPtrTy () const | 
| Return true if this is an integer type or a pointer type.   | |
| bool | isFunctionTy () const | 
| True if this is an instance of FunctionType.   | |
| bool | isStructTy () const | 
| True if this is an instance of StructType.   | |
| bool | isArrayTy () const | 
| True if this is an instance of ArrayType.   | |
| bool | isPointerTy () const | 
| True if this is an instance of PointerType.   | |
| bool | isPtrOrPtrVectorTy () const | 
| Return true if this is a pointer type or a vector of pointer types.   | |
| bool | isVectorTy () const | 
| True if this is an instance of VectorType.   | |
| LLVM_ABI bool | isRISCVVectorTupleTy () const | 
| LLVM_ABI bool | canLosslesslyBitCastTo (Type *Ty) const | 
| Return true if this type could be converted with a lossless BitCast to type 'Ty'.   | |
| LLVM_ABI bool | isEmptyTy () const | 
| Return true if this type is empty, that is, it has no elements or all of its elements are empty.   | |
| LLVM_ABI bool | isFirstClassType () const | 
| Return true if the type is "first class", meaning it is a valid type for a Value.   | |
| bool | isSingleValueType () const | 
| Return true if the type is a valid type for a register in codegen.   | |
| bool | isAggregateType () const | 
| Return true if the type is an aggregate type.   | |
| bool | isSized (SmallPtrSetImpl< Type * > *Visited=nullptr) const | 
| Return true if it makes sense to take the size of this type.   | |
| LLVM_ABI TypeSize | getPrimitiveSizeInBits () const LLVM_READONLY | 
| Return the basic size of this type if it is a primitive type.   | |
| LLVM_ABI unsigned | getScalarSizeInBits () const LLVM_READONLY | 
| If this is a vector type, return the getPrimitiveSizeInBits value for the element type.   | |
| LLVM_ABI int | getFPMantissaWidth () const | 
| Return the width of the mantissa of this type.   | |
| Type * | getScalarType () const | 
| If this is a vector type, return the element type, otherwise return 'this'.   | |
| subtype_iterator | subtype_begin () const | 
| subtype_iterator | subtype_end () const | 
| ArrayRef< Type * > | subtypes () const | 
| subtype_reverse_iterator | subtype_rbegin () const | 
| subtype_reverse_iterator | subtype_rend () const | 
| Type * | getContainedType (unsigned i) const | 
| This method is used to implement the type iterator (defined at the end of the file).   | |
| unsigned | getNumContainedTypes () const | 
| Return the number of types in the derived type.   | |
| LLVM_ABI unsigned | getIntegerBitWidth () const | 
| LLVM_ABI Type * | getFunctionParamType (unsigned i) const | 
| LLVM_ABI unsigned | getFunctionNumParams () const | 
| LLVM_ABI bool | isFunctionVarArg () const | 
| LLVM_ABI StringRef | getStructName () const | 
| LLVM_ABI unsigned | getStructNumElements () const | 
| LLVM_ABI Type * | getStructElementType (unsigned N) const | 
| LLVM_ABI uint64_t | getArrayNumElements () const | 
| Type * | getArrayElementType () const | 
| LLVM_ABI StringRef | getTargetExtName () const | 
| LLVM_ABI Type * | getWithNewType (Type *EltTy) const | 
| Given vector type, change the element type, whilst keeping the old number of elements.   | |
| LLVM_ABI Type * | getWithNewBitWidth (unsigned NewBitWidth) const | 
| Given an integer or vector type, change the lane bitwidth to NewBitwidth, whilst keeping the old number of lanes.   | |
| LLVM_ABI Type * | getExtendedType () const | 
| Given scalar/vector integer type, returns a type with elements twice as wide as in the original type.   | |
| LLVM_ABI unsigned | getPointerAddressSpace () const | 
| Get the address space of this pointer or pointer vector type.   | |
| LLVM_ABI | LLVM_DEPRECATED ("Use PointerType::get instead", "PointerType::get") PointerType *getPointerTo(unsigned AddrSpace=0) const | 
| Return a pointer to the current type.   | |
Additional Inherited Members | |
| Protected Member Functions inherited from llvm::Type | |
| Type (LLVMContext &C, TypeID tid) | |
| ~Type ()=default | |
| unsigned | getSubclassData () const | 
| void | setSubclassData (unsigned val) | 
| Protected Attributes inherited from llvm::Type | |
| unsigned | NumContainedTys = 0 | 
| Keeps track of how many Type*'s there are in the ContainedTys list.   | |
| Type *const * | ContainedTys = nullptr | 
| A pointer to the array of Types contained by this Type.   | |
Class to represent function types.
Definition at line 105 of file DerivedTypes.h.
Definition at line 128 of file DerivedTypes.h.
      
  | 
  delete | 
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition at line 147 of file DerivedTypes.h.
References llvm::Type::FunctionTyID, T, and llvm::Type::Type().
      
  | 
  static | 
This static method is the primary way of constructing a FunctionType.
References isVarArg(), LLVM_ABI, and llvm::Type::Type().
Referenced by callBufferedPrintfStart(), llvm::CloneFunction(), llvm::SanitizerStatReport::create(), createBPFUnreachable(), llvm::MIRParserImpl::createDummyFunction(), createFrameHelperMachineFunction(), llvm::RandomIRBuilder::createFunctionDeclaration(), llvm::VFABI::createFunctionType(), llvm::IRBuilderBase::CreateIntrinsic(), createMergedFunction(), createOutlinedFunction(), llvm::orc::ReOptimizeLayer::createReoptimizeCall(), llvm::createSanitizerCtor(), llvm::createSanitizerCtorAndInitFunctions(), llvm::ThunkInserter< Derived, InsertedThunksTy >::createThunkFunction(), llvm::declareSanitizerInitFunction(), doPromotion(), llvm::orc::IRSpeculationLayer::emit(), llvm::AtomicInfo::EmitAtomicLibcall(), llvm::AtomicInfo::EmitAtomicLoadLibcall(), llvm::AtomicInfo::EmitAtomicStoreLibcall(), emitGetSwiftErrorValue(), emitInlineAsm(), emitLibCall(), emitSetSwiftErrorValue(), emitTargetTaskProxyFunction(), emitTPIDR2Save(), llvm::SanitizerStatReport::finish(), fixFunctionTypeIfPtrArgs(), llvm::AMDGPU::generateCrashCode(), generateReproducer(), getDefaultPersonalityFn(), getFreshReductionFunc(), getFunctionPointerElemType(), llvm::AMDGPUMangledLibFunc::getFunctionType(), getFunctionTypeFromAsyncSuspend(), getOrCreateFunction(), getOriginalFunctionType(), llvm::Module::getOrInsertFunction(), llvm::getOrInsertLibFunc(), getOrInsertValueProfilingCall(), getPownType(), llvm::coro::Shape::getResumeFunctionType(), llvm::Intrinsic::getType(), insertCall(), insertCallBeforeInstruction(), InsertSafepointPoll(), insertUseHolderAfter(), LLVMFunctionType(), lowerAwaitSuspend(), llvm::lowerGlobalIFuncUsersAsGlobalCtor(), makeDoubleDouble(), makeDoubleDoubleDouble(), makeDoubleDoubleDoubleDouble(), makeDoubleDoubleI32(), makeStatepointExplicitImpl(), makeX86FP80X86FP80(), makeX86FP80X86FP80I32(), makeX86FP80X86FP80X86FP80(), makeX86FP80X86FP80X86FP80X86FP80(), llvm::reconstructFunctionType(), ReplaceCallWith(), replaceWithCallToVeclib(), llvm::DeclareRuntimeLibcallsPass::run(), runImpl(), and llvm::toTypedFunPointer().
      
  | 
  static | 
Create a FunctionType taking no parameters.
      
  | 
  inline | 
Return the number of fixed parameters this function type requires.
This does not consider varargs.
Definition at line 144 of file DerivedTypes.h.
References llvm::Type::NumContainedTys.
Referenced by llvm::AMDGPUMangledLibFunc::AMDGPUMangledLibFunc(), llvm::FunctionComparator::cmpTypes(), createThunk(), llvm::VFShape::get(), llvm::Mangler::getNameWithPrefix(), getParamType(), llvm::InlineFunctionImpl(), llvm::AMDGPULibFunc::isCompatibleSignature(), llvm::isLibFreeFunction(), llvm::CallLowering::lowerCall(), llvm::MCJIT::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), llvm::TargetLowering::CallLoweringInfo::setCallee(), llvm::VFABI::tryDemangleForVFABI(), llvm::SelectionDAGBuilder::visitSPDescriptorFailure(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
Parameter type accessors.
Definition at line 137 of file DerivedTypes.h.
References assert(), llvm::Type::ContainedTys, getNumParams(), and llvm::Type::Type().
Referenced by llvm::AMDGPUMangledLibFunc::AMDGPUMangledLibFunc(), llvm::FunctionComparator::cmpTypes(), llvm::VFABI::createFunctionType(), llvm::IRBuilderBase::CreateLaunderInvariantGroup(), llvm::IRBuilderBase::CreateStripInvariantGroup(), llvm::AArch64TargetLowering::emitStoreConditional(), llvm::ARMTargetLowering::emitStoreConditional(), llvm::VPWidenCallRecipe::execute(), expandBufferStoreIntrinsic(), llvm::AMDGPULibCalls::fold(), getArgSPIRVType(), llvm::AMDGPULibFunc::isCompatibleSignature(), llvm::isLibFreeFunction(), llvm::SITargetLowering::LowerFormalArguments(), llvm::MCJIT::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), llvm::UpgradeARCRuntime(), llvm::SelectionDAGBuilder::visitSPDescriptorFailure(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
      
  | 
  inline | 
Definition at line 126 of file DerivedTypes.h.
References llvm::Type::ContainedTys, and llvm::Type::Type().
Referenced by llvm::FunctionComparator::cmpTypes(), llvm::VFABI::createFunctionType(), llvm::objcarc::hasAttachedCallOpBundle(), llvm::isLibFreeFunction(), llvm::SPIRVCallLowering::lowerFormalArguments(), llvm::Intrinsic::matchIntrinsicSignature(), replaceFallthroughCoroEnd(), llvm::MCJIT::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), llvm::toTypedFunPointer(), llvm::UpgradeARCRuntime(), llvm::SelectionDAGBuilder::visitSPDescriptorFailure(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
      
  | 
  inline | 
Definition at line 125 of file DerivedTypes.h.
References llvm::Type::getSubclassData().
Referenced by llvm::FunctionComparator::cmpTypes(), get(), llvm::Intrinsic::getIntrinsicSignature(), llvm::Mangler::getNameWithPrefix(), llvm::CallLowering::lowerCall(), llvm::MCJIT::runFunction(), llvm::TargetLowering::CallLoweringInfo::setCallee(), and llvm::toTypedFunPointer().
      
  | 
  delete | 
      
  | 
  inline | 
Definition at line 130 of file DerivedTypes.h.
References llvm::Type::ContainedTys.
Referenced by llvm::LoopVectorizationCostModel::getVectorIntrinsicCost(), and params().
      
  | 
  inline | 
Definition at line 131 of file DerivedTypes.h.
References llvm::Type::ContainedTys, and llvm::Type::NumContainedTys.
Referenced by llvm::LoopVectorizationCostModel::getVectorIntrinsicCost(), and params().
Definition at line 132 of file DerivedTypes.h.
References llvm::ArrayRef(), param_begin(), and param_end().
Referenced by llvm::lowerGlobalIFuncUsersAsGlobalCtor(), llvm::Intrinsic::matchIntrinsicSignature(), llvm::InsertFunctionStrategy::mutate(), llvm::IRSimilarity::IRInstructionData::setCalleeName(), and llvm::toTypedFunPointer().