LLVM
8.0.1
|
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 { VoidTyID = 0, HalfTyID, FloatTyID, DoubleTyID, X86_FP80TyID, FP128TyID, PPC_FP128TyID, LabelTyID, MetadataTyID, X86_MMXTyID, TokenTyID, IntegerTyID, FunctionTyID, StructTyID, ArrayTyID, PointerTyID, VectorTyID } |
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. More... | |
unsigned | getNumParams () const |
Return the number of fixed parameters this function type requires. More... | |
Public Member Functions inherited from llvm::Type | |
void | print (raw_ostream &O, bool IsForDebug=false, bool NoDetails=false) const |
Print the current type. More... | |
void | dump () const |
LLVMContext & | getContext () const |
Return the LLVMContext in which this type was uniqued. More... | |
TypeID | getTypeID () const |
Return the type id for the type. More... | |
bool | isVoidTy () const |
Return true if this is 'void'. More... | |
bool | isHalfTy () const |
Return true if this is 'half', a 16-bit IEEE fp type. More... | |
bool | isFloatTy () const |
Return true if this is 'float', a 32-bit IEEE fp type. More... | |
bool | isDoubleTy () const |
Return true if this is 'double', a 64-bit IEEE fp type. More... | |
bool | isX86_FP80Ty () const |
Return true if this is x86 long double. More... | |
bool | isFP128Ty () const |
Return true if this is 'fp128'. More... | |
bool | isPPC_FP128Ty () const |
Return true if this is powerpc long double. More... | |
bool | isFloatingPointTy () const |
Return true if this is one of the six floating-point types. More... | |
const fltSemantics & | getFltSemantics () const |
bool | isX86_MMXTy () const |
Return true if this is X86 MMX. More... | |
bool | isFPOrFPVectorTy () const |
Return true if this is a FP type or a vector of FP. More... | |
bool | isLabelTy () const |
Return true if this is 'label'. More... | |
bool | isMetadataTy () const |
Return true if this is 'metadata'. More... | |
bool | isTokenTy () const |
Return true if this is 'token'. More... | |
bool | isIntegerTy () const |
True if this is an instance of IntegerType. More... | |
bool | isIntegerTy (unsigned Bitwidth) const |
Return true if this is an IntegerType of the given width. More... | |
bool | isIntOrIntVectorTy () const |
Return true if this is an integer type or a vector of integer types. More... | |
bool | isIntOrIntVectorTy (unsigned BitWidth) const |
Return true if this is an integer type or a vector of integer types of the given width. More... | |
bool | isIntOrPtrTy () const |
Return true if this is an integer type or a pointer type. More... | |
bool | isFunctionTy () const |
True if this is an instance of FunctionType. More... | |
bool | isStructTy () const |
True if this is an instance of StructType. More... | |
bool | isArrayTy () const |
True if this is an instance of ArrayType. More... | |
bool | isPointerTy () const |
True if this is an instance of PointerType. More... | |
bool | isPtrOrPtrVectorTy () const |
Return true if this is a pointer type or a vector of pointer types. More... | |
bool | isVectorTy () const |
True if this is an instance of VectorType. More... | |
bool | canLosslesslyBitCastTo (Type *Ty) const |
Return true if this type could be converted with a lossless BitCast to type 'Ty'. More... | |
bool | isEmptyTy () const |
Return true if this type is empty, that is, it has no elements or all of its elements are empty. More... | |
bool | isFirstClassType () const |
Return true if the type is "first class", meaning it is a valid type for a Value. More... | |
bool | isSingleValueType () const |
Return true if the type is a valid type for a register in codegen. More... | |
bool | isAggregateType () const |
Return true if the type is an aggregate type. More... | |
bool | isSized (SmallPtrSetImpl< Type *> *Visited=nullptr) const |
Return true if it makes sense to take the size of this type. More... | |
unsigned | getPrimitiveSizeInBits () const LLVM_READONLY |
Return the basic size of this type if it is a primitive type. More... | |
unsigned | getScalarSizeInBits () const LLVM_READONLY |
If this is a vector type, return the getPrimitiveSizeInBits value for the element type. More... | |
int | getFPMantissaWidth () const |
Return the width of the mantissa of this type. More... | |
Type * | getScalarType () const |
If this is a vector type, return the element type, otherwise return 'this'. More... | |
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). More... | |
unsigned | getNumContainedTypes () const |
Return the number of types in the derived type. More... | |
unsigned | getIntegerBitWidth () const |
Type * | getFunctionParamType (unsigned i) const |
unsigned | getFunctionNumParams () const |
bool | isFunctionVarArg () const |
StringRef | getStructName () const |
unsigned | getStructNumElements () const |
Type * | getStructElementType (unsigned N) const |
Type * | getSequentialElementType () const |
uint64_t | getArrayNumElements () const |
Type * | getArrayElementType () const |
unsigned | getVectorNumElements () const |
Type * | getVectorElementType () const |
Type * | getPointerElementType () const |
unsigned | getPointerAddressSpace () const |
Get the address space of this pointer or pointer vector type. More... | |
PointerType * | getPointerTo (unsigned AddrSpace=0) const |
Return a pointer to the current type. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::Type | |
Type (LLVMContext &C, TypeID tid) | |
~Type ()=default | |
unsigned | getSubclassData () const |
void | setSubclassData (unsigned val) |
Static Protected Member Functions inherited from llvm::Type | |
static bool | isSequentialType (TypeID TyID) |
Protected Attributes inherited from llvm::Type | |
unsigned | NumContainedTys = 0 |
Keeps track of how many Type*'s there are in the ContainedTys list. More... | |
Type *const * | ContainedTys = nullptr |
A pointer to the array of Types contained by this Type. More... | |
Class to represent function types.
Definition at line 103 of file DerivedTypes.h.
Definition at line 126 of file DerivedTypes.h.
|
delete |
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition at line 142 of file DerivedTypes.h.
References llvm::Type::FunctionTyID, and llvm::Type::getTypeID().
|
static |
This static method is the primary way of constructing a FunctionType.
Definition at line 297 of file Type.cpp.
References llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate(), llvm::LLVMContextImpl::FunctionTypes, llvm::Type::getContext(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert_as(), llvm::LLVMContext::pImpl, llvm::ArrayRef< T >::size(), and llvm::LLVMContextImpl::TypeAllocator.
Referenced by appendToGlobalArray(), buildFrameType(), llvm::CloneFunction(), llvm::SanitizerStatReport::create(), createCallInst(), llvm::createDeadArgHackingPass(), createDevirtTriggerFunc(), createDummyFunction(), llvm::createDwarfEHPass(), llvm::createEfficiencySanitizerPass(), createEmptyFunction(), llvm::createHWAddressSanitizerPass(), llvm::createSanitizerCtorAndInitFunctions(), llvm::createX86RetpolineThunksPass(), llvm::declareSanitizerInitFunction(), doPromotion(), EmitInlineAsm(), EnsureFunctionExists(), findInitTrampoline(), llvm::CodeExtractor::findInputsOutputs(), llvm::SanitizerStatReport::finish(), forEachUser(), FunctionNumber(), getDefaultPersonalityFn(), llvm::AMDGPUMangledLibFunc::getFunctionType(), llvm::Module::getOrInsertFunction(), getOrInsertGlobal(), getOrInsertValueProfilingCall(), getRetComponentType(), GetRMWLibcall(), getSignature(), llvm::Intrinsic::getType(), INITIALIZE_PASS(), insertCall(), InsertSafepointPoll(), insertUseHolderAfter(), instrumentMaskedLoadOrStore(), LLVMFunctionType(), makeStatepointExplicitImpl(), needsRuntimeRegistrationOfSectionRange(), parseOptionalLinkageAux(), PushArgMD(), ReplaceCallWith(), llvm::WholeProgramDevirtPass::run(), selectJumpTableArmEncoding(), shouldFixMainFunction(), shouldKeepInEntry(), TypeSizeToSizeIndex(), UpgradeIntrinsicFunction1(), llvm::AMDGPULibCalls::useNative(), llvm::InnerLoopVectorizer::widenInstruction(), and wrapConstantAsMetadata().
|
static |
Create a FunctionType taking no parameters.
Definition at line 323 of file Type.cpp.
References llvm::None.
|
inline |
Return the number of fixed parameters this function type requires.
This does not consider varargs.
Definition at line 139 of file DerivedTypes.h.
References llvm::Type::NumContainedTys.
Referenced by CC_Lanai32_VarArg(), llvm::FunctionComparator::cmpTypes(), computeAddrSpace(), llvm::CallInst::CreateFree(), CreateWrapper(), emitSignedInt64(), findInitTrampoline(), llvm::StackSafetyInfo::FunctionInfo::FunctionInfo(), getAllocationDataForFunction(), getAttrKindEncoding(), llvm::TargetTransformInfoImplBase::getCallCost(), llvm::Mangler::getNameWithPrefix(), getParameterABIAttributes(), getRetComponentType(), getSuccPad(), INITIALIZE_PASS(), llvm::InlineFunction(), llvm::isFreeCall(), isFuncOrArgAttr(), llvm::isLegalToPromote(), llvm::HexagonTargetLowering::LowerCall(), llvm::CallLowering::lowerCall(), llvm::HexagonTargetLowering::LowerFormalArguments(), maybePrintComdat(), llvm::CallBase::populateBundleOperandInfos(), PrintLLVMName(), llvm::promoteCall(), PushArgMD(), llvm::Interpreter::runFunction(), llvm::MCJIT::runFunction(), llvm::orc::OrcMCJITReplacement::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), llvm::FastISel::CallLoweringInfo::setCallee(), llvm::TargetLowering::CallLoweringInfo::setCallee(), shouldFixMainFunction(), ShrinkDemandedConstant(), UpgradeX86IntrinsicFunction(), UpgradeX86IntrinsicsWith8BitMask(), llvm::InlineAsm::Verify(), and wrapConstantAsMetadata().
Parameter type accessors.
Definition at line 135 of file DerivedTypes.h.
References llvm::Type::ContainedTys.
Referenced by canTransformToMemCmp(), CC_RISCV(), llvm::FunctionComparator::cmpTypes(), llvm::CallInst::CreateFree(), llvm::IRBuilder< TargetFolder >::CreateLaunderInvariantGroup(), llvm::IRBuilder< TargetFolder >::CreateStripInvariantGroup(), llvm::AArch64TargetLowering::emitStoreConditional(), llvm::ARMTargetLowering::emitStoreConditional(), findInitTrampoline(), getAllocationDataForFunction(), getAttrKindEncoding(), getParameterABIAttributes(), getSignature(), getSuccPad(), INITIALIZE_PASS(), llvm::isFreeCall(), isFuncOrArgAttr(), isThunkProfitable(), lookupFunction(), llvm::SITargetLowering::LowerFormalArguments(), maybePrintComdat(), needsFPStubFromParams(), llvm::CallBase::populateBundleOperandInfos(), PushArgMD(), llvm::MCJIT::runFunction(), llvm::orc::OrcMCJITReplacement::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), ShrinkDemandedConstant(), UpgradePTESTIntrinsic(), UpgradeX86IntrinsicFunction(), UpgradeX86IntrinsicsWith8BitMask(), and whichFPParamVariantNeeded().
|
inline |
Definition at line 124 of file DerivedTypes.h.
References llvm::Type::ContainedTys.
Referenced by CC_RISCV(), llvm::CallInst::classof(), llvm::InvokeInst::classof(), llvm::CloneFunction(), llvm::FunctionComparator::cmpTypes(), llvm::ComputeSignatureVTs(), llvm::createDeadArgHackingPass(), CreateWrapper(), doPromotion(), findInitTrampoline(), getAllocationDataForFunction(), getAttrKindEncoding(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getCallCost(), getParameterABIAttributes(), getRetComponentType(), getSignature(), INITIALIZE_PASS(), llvm::isFreeCall(), isFuncOrArgAttr(), lookupFunction(), maybePrintCallAddrSpace(), llvm::CallBase::mutateFunctionType(), needsFPReturnHelper(), llvm::CallBase::populateBundleOperandInfos(), PrintLLVMName(), PushArgMD(), llvm::Intrinsic::remangleIntrinsicFunction(), llvm::WholeProgramDevirtPass::run(), llvm::MCJIT::runFunction(), llvm::orc::OrcMCJITReplacement::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), shouldFixMainFunction(), ShrinkDemandedConstant(), SimplifyCall(), and llvm::InlineAsm::Verify().
Return true if the specified type is valid as an argument type.
Definition at line 332 of file Type.cpp.
References llvm::Type::isFirstClassType().
Referenced by parseOptionalLinkageAux().
Return true if the specified type is valid as a return type.
Definition at line 327 of file Type.cpp.
References llvm::Type::isFunctionTy(), llvm::Type::isLabelTy(), and llvm::Type::isMetadataTy().
Referenced by computeAddrSpace(), FunctionNumber(), and parseOptionalLinkageAux().
|
inline |
Definition at line 123 of file DerivedTypes.h.
References llvm::Type::getSubclassData().
Referenced by llvm::Interpreter::callFunction(), llvm::CloneFunction(), llvm::FunctionComparator::cmpTypes(), llvm::ComputeSignatureVTs(), llvm::computeUsesVAFloatArgument(), llvm::createDeadArgHackingPass(), llvm::CallInst::CreateFree(), CreateWrapper(), doPromotion(), eliminateTailRecursion(), emitSignedInt64(), llvm::Evaluator::EvaluateBlock(), llvm::CodeExtractor::extractCodeRegion(), findInitTrampoline(), FunctionNumber(), getAttrKindEncoding(), getComparePred(), llvm::Mangler::getNameWithPrefix(), getParameterABIAttributes(), getParentPad(), getRetComponentType(), getSignature(), INITIALIZE_PASS(), llvm::SelectionDAGBuilder::LowerCallSiteWithDeoptBundleImpl(), maybePrintCallAddrSpace(), maybePrintComdat(), llvm::CallBase::populateBundleOperandInfos(), PrintLLVMName(), llvm::Intrinsic::remangleIntrinsicFunction(), llvm::DeadArgumentEliminationPass::run(), llvm::WholeProgramDevirtPass::run(), llvm::MCJIT::runFunction(), llvm::orc::OrcMCJITReplacement::runFunction(), llvm::FastISel::CallLoweringInfo::setCallee(), llvm::TargetLowering::CallLoweringInfo::setCallee(), shouldFixMainFunction(), llvm::InlineAsm::Verify(), and wrapConstantAsMetadata().
|
delete |
|
inline |
Definition at line 128 of file DerivedTypes.h.
References llvm::Type::ContainedTys.
Referenced by llvm::createDeadArgHackingPass(), CreateWrapper(), FunctionNumber(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getCallCost(), llvm::AMDGPULibFunc::getOrInsertFunction(), getSignature(), INITIALIZE_PASS(), LLVMGetParamTypes(), LowerADJUST_TRAMPOLINE(), and PrintLLVMName().
|
inline |
Definition at line 129 of file DerivedTypes.h.
References llvm::Type::ContainedTys, and llvm::Type::NumContainedTys.
Referenced by llvm::createDeadArgHackingPass(), CreateWrapper(), FunctionNumber(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getCallCost(), llvm::AMDGPULibFunc::getOrInsertFunction(), getSignature(), INITIALIZE_PASS(), LLVMGetParamTypes(), LowerADJUST_TRAMPOLINE(), and PrintLLVMName().
Definition at line 130 of file DerivedTypes.h.
References llvm::makeArrayRef().
Referenced by llvm::ComputeSignatureVTs(), getSignature(), isCallPromotable(), lookupFunction(), llvm::Intrinsic::remangleIntrinsicFunction(), llvm::WholeProgramDevirtPass::run(), UpgradeIntrinsicFunction1(), and wrapConstantAsMetadata().