Val
on the stack as the type given by QT
.
Invoked whenever a block is created.
The constructor method fills in the inline descriptors of all fields and array elements. It also initializes all the fields which contain non-trivial types.
Definition at line 35 of file Descriptor.h.
◆ BlockDtorFnInvoked when a block is destroyed.
Invokes the destructors of all non-trivial nested fields of arrays and records.
Definition at line 41 of file Descriptor.h.
◆ BlockMoveFnInvoked when a block with pointers referencing it goes out of scope.
Such blocks are persisted: the move function copies all inline descriptors and non-trivial fields, as existing pointers might need to reference those descriptors. Data is not copied since it cannot be legally read.
Definition at line 48 of file Descriptor.h.
◆ CompareFn ◆ DeclTy ◆ FixedPointSemantics ◆ FunctionDeclTy ◆ InitMapPtr ◆ SourceMap ◆ ArithOp ◆ CastKind Enumerator Reinterpret AtomicDefinition at line 57 of file PrimType.h.
◆ Endian ◆ GlobalInitState Enumerator Initialized NoInitializer InitializerFailedDefinition at line 52 of file Descriptor.h.
◆ IncDecOp ◆ Opcode ◆ PrimTypeEnumeration of the primitive types of the VM.
Enumerator PT_Sint8 PT_Uint8 PT_Sint16 PT_Uint16 PT_Sint32 PT_Uint32 PT_Sint64 PT_Uint64 PT_IntAP PT_IntAPS PT_Bool PT_FixedPoint PT_Float PT_Ptr PT_FnPtr PT_MemberPtrDefinition at line 34 of file PrimType.h.
◆ PushVal ◆ ShiftDir ◆ Storage Enumerator Block Int Fn TypeidDefinition at line 57 of file Pointer.h.
◆ Add()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Addf() ◆ AddOffset()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ AddSubMulHelper()template<typename
T,
bool(*)(
T,
T,
unsigned,
T*) OpFW, template< typename
U> class OpAP>
◆ align()Aligns a size to the pointer alignment.
Definition at line 131 of file PrimType.h.
Referenced by aligned(), callArgSize(), CallPtr(), CheckNonNullArgs(), clang::interp::ByteCodeEmitter::compileFunc(), clang::interp::ByteCodeEmitter::compileObjCBlock(), clang::interp::ByteCodeEmitter::createLocal(), clang::interp::InterpFrame::describe(), clang::interp::InterpStack::dump(), emit(), clang::interp::ByteCodeEmitter::emitLabel(), emitSerialized(), clang::interp::Program::getOrCreateRecord(), clang::interp::Function::getWrittenArgSize(), interp__builtin_assume_aligned(), interp__builtin_atomic_lock_free(), interp__builtin_carryop(), interp__builtin_complex(), interp__builtin_expect(), interp__builtin_fpclassify(), interp__builtin_ia32_bextr(), interp__builtin_ia32_bzhi(), interp__builtin_ia32_pdep(), interp__builtin_ia32_pext(), interp__builtin_isfpclass(), interp__builtin_overflowop(), interp__builtin_rotate(), interp_floating_comparison(), peekToAPSInt(), clang::interp::CodePtr::read(), ReadArg< FixedPoint >(), ReadArg< FixedPoint >(), ReadArg< Floating >(), ReadArg< Floating >(), clang::interp::Compiler< Emitter >::VisitCallExpr(), clang::interp::Compiler< Emitter >::VisitCXXConstructExpr(), and clang::interp::Compiler< Emitter >::VisitCXXInheritedCtorInitExpr().
◆ aligned() [1/2] static bool clang::interp::aligned ( const void * P ) inlinestatic ◆ aligned() [2/2] ◆ Alloc() ◆ AllocCN()template<
PrimTypeName, class SizeT = typename PrimConv<Name>::T>
◆ AllocN()template<
PrimTypeName, class SizeT = typename PrimConv<Name>::T>
◆ ArrayDecay() ◆ ArrayElem()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ ArrayElemPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ ArrayElemPtr()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ ArrayElemPtrPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ assignInteger() ◆ Assume() ◆ BitAnd()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the RHS from the stack.
2) Pops the LHS from the stack. 3) Pushes 'LHS & RHS' on the stack
Definition at line 602 of file Interp.h.
References clang::Result, and clang::T.
◆ BitCast() ◆ BitCastPrim()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
bool clang::interp::BitCastPrim ( InterpState & S, CodePtr OpPC, bool TargetIsUCharOrByte, uint32_t ResultBitWidth, const llvm::fltSemantics * Sem ) inline ◆ BitOr()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the RHS from the stack.
2) Pops the LHS from the stack. 3) Pushes 'LHS | RHS' on the stack
Definition at line 619 of file Interp.h.
References clang::Result, and clang::T.
◆ BitXor()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the RHS from the stack.
2) Pops the LHS from the stack. 3) Pushes 'LHS ^ RHS' on the stack
Definition at line 636 of file Interp.h.
References clang::Result, and clang::T.
◆ Call() ◆ callArgSize() ◆ CallBI() ◆ CallPtr()Definition at line 1449 of file Interp.cpp.
References align(), clang::Call, CallVirt(), CheckNonNullArgs(), E, clang::interp::FunctionPointer::getFunction(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Invalid, clang::interp::FunctionPointer::isValid(), primSize(), and PT_Ptr.
◆ CallVar() ◆ CallVirt()Definition at line 1349 of file Interp.cpp.
References clang::Call, E, clang::Func, clang::Type::getAsRecordDecl(), clang::interp::Pointer::getBase(), clang::Sema::getLangOpts(), clang::Type::getPointeeType(), GetPtrBasePop(), clang::FunctionDecl::getReturnType(), clang::Stmt::getSourceRange(), clang::interp::Pointer::getType(), clang::interp::Pointer::isBaseClass(), clang::Type::isPointerOrReferenceType(), clang::CXXMethodDecl::isVirtual(), primSize(), and PT_Ptr.
Referenced by CallPtr().
◆ Cast() ◆ CastAP()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastAPS()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastFixedPoint() ◆ CastFixedPointFloating() static bool clang::interp::CastFixedPointFloating ( InterpState & S, CodePtr OpPC, const llvm::fltSemantics * Sem ) inlinestaticDefinition at line 2297 of file Interp.h.
◆ CastFixedPointIntegral()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastFloatingFixedPoint() ◆ CastFloatingIntegral()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastFloatingIntegralAP() static bool clang::interp::CastFloatingIntegralAP ( InterpState & S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI ) inlinestatic ◆ CastFloatingIntegralAPS() static bool clang::interp::CastFloatingIntegralAPS ( InterpState & S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI ) inlinestatic ◆ CastFP() bool clang::interp::CastFP ( InterpState & S, CodePtr OpPC, const llvm::fltSemantics * Sem, llvm::RoundingMode RM ) inline ◆ CastIntegralFixedPoint()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastIntegralFloating()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
bool clang::interp::CastIntegralFloating ( InterpState & S, CodePtr OpPC, const llvm::fltSemantics * Sem, uint32_t FPOI ) ◆ CastMemberPtrPtr() ◆ CastPointerIntegral()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CastPointerIntegralAP() ◆ CastPointerIntegralAPS() ◆ CheckAllocations() ◆ CheckArray() ◆ CheckArrayInitialized()Definition at line 66 of file EvaluationResult.cpp.
References clang::interp::Pointer::atIndex(), CheckArrayInitialized(), CheckFieldsInitialized(), DiagnoseUninitializedSubobject(), clang::ArrayType::getElementType(), clang::interp::Pointer::getElemRecord(), clang::interp::Pointer::getField(), clang::ConstantArrayType::getZExtSize(), clang::interp::Pointer::isInitialized(), clang::Type::isRecordType(), Loc, clang::interp::Pointer::narrow(), and clang::Result.
Referenced by CheckArrayInitialized(), CheckFieldsInitialized(), and clang::interp::EvaluationResult::checkFullyInitialized().
◆ CheckArraySize()template<typename SizeT >
◆ CheckBitCast() ◆ CheckCallable()Checks if a method can be called.
Definition at line 684 of file Interp.cpp.
References bool, clang::interp::Function::getDecl(), clang::FunctionDecl::getDefinition(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::FunctionDecl::getStorageClass(), clang::Decl::hasAttr(), clang::interp::Function::hasBody(), clang::FunctionDecl::hasBody(), clang::FunctionDecl::isConstexpr(), clang::interp::Function::isConstexpr(), clang::FunctionDecl::isDefined(), clang::Decl::isInvalidDecl(), clang::interp::Function::isLambdaStaticInvoker(), clang::interp::Function::isVirtual(), Loc, and clang::SC_Extern.
Referenced by Call(), and CallVar().
◆ CheckCallDepth() ◆ CheckConst() ◆ CheckConstant() [1/2]Checks if the Descriptor is of a constexpr or const global variable.
Definition at line 343 of file Interp.cpp.
References clang::interp::Descriptor::asVarDecl(), D, diagnoseNonConstVariable(), clang::Sema::getASTContext(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::Type::getPointeeType(), clang::Invalid, clang::QualType::isConstant(), clang::Type::isIntegralOrEnumerationType(), clang::Type::isPointerOrReferenceType(), and clang::T.
Referenced by CheckConstant(), CheckFinalLoad(), CheckLoad(), and GetGlobal().
◆ CheckConstant() [2/2] ◆ checkConstructor() ◆ CheckDecl() ◆ CheckDeclRef() ◆ CheckDeleteSource() ◆ CheckDivRem() ◆ CheckDowncast() ◆ CheckDummy()Checks if a pointer is a dummy pointer.
Definition at line 910 of file Interp.cpp.
References clang::AK_Assign, clang::AK_Decrement, clang::AK_Increment, clang::AK_Read, clang::interp::Descriptor::asValueDecl(), D, diagnoseUnknownDecl(), E, clang::interp::Pointer::getDeclDesc(), clang::Sema::getLangOpts(), and clang::interp::Pointer::isDummy().
Referenced by CheckFinalLoad(), CheckLoad(), CheckStore(), and interp__builtin_strlen().
◆ CheckDynamicMemoryAllocation() ◆ CheckEnumValue()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CheckExtern()Checks if the variable has externally defined storage.
Definition at line 286 of file Interp.cpp.
References clang::interp::Descriptor::asValueDecl(), clang::interp::Descriptor::asVarDecl(), diagnoseNonConstVariable(), clang::interp::Pointer::getDeclDesc(), clang::Sema::getLangOpts(), clang::interp::Pointer::isExtern(), and clang::interp::Pointer::isInitialized().
Referenced by CheckFinalLoad(), CheckInvoke(), CheckLoad(), CheckStore(), and getField().
◆ CheckFieldsInitialized()Definition at line 96 of file EvaluationResult.cpp.
References clang::interp::Pointer::atField(), clang::interp::Record::bases(), CheckArrayInitialized(), CheckFieldsInitialized(), DiagnoseUninitializedSubobject(), clang::interp::Record::fields(), clang::Type::getAsArrayTypeUnsafe(), clang::interp::Record::getDecl(), clang::interp::Pointer::getDeclDesc(), clang::interp::Descriptor::getLocation(), clang::interp::Pointer::getRecord(), clang::interp::Pointer::isActive(), clang::Type::isArrayType(), clang::Type::isIncompleteArrayType(), clang::interp::Pointer::isInitialized(), clang::Type::isRecordType(), clang::interp::Record::isUnion(), Loc, P, and clang::Result.
Referenced by CheckArrayInitialized(), CheckFieldsInitialized(), and clang::interp::EvaluationResult::checkFullyInitialized().
◆ CheckFinalLoad()This is not used by any of the opcodes directly.
It's used by EvalEmitter to do the final lvalue-to-rvalue conversion.
Definition at line 623 of file Interp.cpp.
References clang::AK_Read, CheckActive(), CheckConstant(), CheckDummy(), CheckExtern(), CheckInitialized(), CheckLive(), CheckMutable(), CheckRange(), CheckTemporary(), and CheckWeak().
◆ CheckFloatResult()Checks if the result of a floating-point operation is valid in the current context.
Definition at line 793 of file Interp.cpp.
References E, clang::LangOptionsBase::FPE_Ignore, clang::FPOptions::getExceptionMode(), clang::FPOptions::getRoundingMode(), and clang::Result.
Referenced by Addf(), CastFloatingIntegral(), CastFloatingIntegralAP(), CastFloatingIntegralAPS(), CastIntegralFloating(), Divf(), IncDecFloatHelper(), Mulf(), and Subf().
◆ CheckGlobalInitialized() ◆ CheckInit() ◆ CheckInitialized() ◆ CheckInvoke() ◆ CheckLiteralType() ◆ CheckLive()Checks if a pointer is live and accessible.
Definition at line 309 of file Interp.cpp.
References clang::CSK_Field, clang::interp::Pointer::getDeclLoc(), clang::interp::Pointer::isDynamic(), clang::interp::Pointer::isField(), clang::interp::Pointer::isLive(), clang::interp::Pointer::isTemporary(), and clang::interp::Pointer::isZero().
Referenced by CheckFinalLoad(), CheckInit(), CheckInvoke(), CheckLoad(), CheckStore(), interp__builtin_strcmp(), and interp__builtin_strlen().
◆ CheckLoad()Checks if a value can be loaded from a block.
Definition at line 594 of file Interp.cpp.
References CheckActive(), CheckConstant(), CheckDummy(), CheckExtern(), CheckInitialized(), CheckLive(), CheckMutable(), CheckRange(), CheckTemporary(), CheckVolatile(), and CheckWeak().
Referenced by ArrayElem(), ArrayElemPop(), BitCast(), BitCastPrim(), CopyArray(), Dec(), Decf(), DecfPop(), DecPop(), GetField(), GetFieldPop(), GetLocal(), GetThisField(), Inc(), Incf(), IncfPop(), IncPop(), interp__builtin_nan(), Load(), LoadPop(), and Memcpy().
◆ CheckMutable() ◆ CheckNewDeleteForms() ◆ CheckNewTypeMismatch()Check if the initializer and storage types of a placement-new expression match.
Definition at line 1492 of file Interp.cpp.
References clang::AK_Construct, clang::interp::Descriptor::asExpr(), CheckActive(), CheckStore(), E, clang::Sema::getASTContext(), clang::interp::Pointer::getBase(), clang::ASTContext::getBaseElementType(), clang::ASTContext::getConstantArrayType(), clang::interp::Pointer::getFieldDesc(), clang::Type::getPointeeType(), clang::interp::Pointer::getRecord(), clang::interp::Pointer::getType(), clang::ASTContext::hasSimilarType(), clang::interp::Pointer::inUnion(), InvalidNewDeleteExpr(), clang::interp::Pointer::isActive(), clang::Type::isPointerType(), clang::interp::Record::isUnion(), and clang::Normal.
Referenced by CheckNewTypeMismatchArray().
◆ CheckNewTypeMismatchArray()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CheckNonNullArg()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CheckNonNullArgs() ◆ CheckNull()Checks if a pointer is null.
Definition at line 407 of file Interp.cpp.
References clang::interp::Pointer::isZero(), and Loc.
Referenced by getField(), GetField(), GetFieldPop(), GetPtrActiveField(), GetPtrBase(), GetPtrBasePop(), GetPtrDerivedPop(), GetPtrVirtBasePop(), IncDecPtrHelper(), OffsetHelper(), and SetField().
◆ CheckPointerToIntegralCast()Definition at line 1604 of file Interp.cpp.
References clang::Default, E, clang::Sema::getASTContext(), clang::Sema::getLangOpts(), clang::TargetInfo::getPointerWidth(), clang::ASTContext::getTargetInfo(), clang::Invalid, clang::interp::Pointer::isBlockPointer(), clang::interp::Pointer::isDummy(), and clang::interp::Pointer::isZero().
Referenced by CastPointerIntegral(), CastPointerIntegralAP(), and CastPointerIntegralAPS().
◆ CheckPure() ◆ CheckRange() [1/2]Checks if a pointer is in range.
Definition at line 418 of file Interp.cpp.
References clang::Sema::getLangOpts(), clang::interp::Pointer::isOnePastEnd(), and Loc.
Referenced by ArrayDecay(), CheckFinalLoad(), CheckInit(), CheckInvoke(), CheckLoad(), CheckStore(), getField(), GetField(), GetFieldPop(), GetPtrActiveField(), interp__builtin_strcmp(), interp__builtin_strlen(), and SetField().
◆ CheckRange() [2/2] ◆ CheckShift()template<
ShiftDirDir, typename
LT, typename RT >
◆ CheckStore()Checks if a value can be stored in a block.
Definition at line 648 of file Interp.cpp.
References clang::AK_Assign, CheckConst(), CheckDummy(), CheckExtern(), CheckGlobal(), CheckLive(), and CheckRange().
Referenced by CheckNewTypeMismatch(), SetField(), SetThisField(), Store(), StoreBitField(), StoreBitFieldPop(), and StorePop().
◆ CheckSubobject() ◆ CheckThis()Checks the 'this' pointer.
Definition at line 766 of file Interp.cpp.
References E, clang::Sema::getLangOpts(), Loc, and This().
Referenced by GetPtrActiveThisField(), GetPtrThisBase(), GetPtrThisField(), GetPtrThisVirtBase(), GetThisField(), InitThisBitField(), InitThisField(), SetThisField(), and This().
◆ CheckVolatile() ◆ CheckWeak() ◆ cleanupAfterFunctionCall() ◆ CMP3()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CmpHelper() ◆ CmpHelper< FunctionPointer >() ◆ CmpHelper< Pointer >() ◆ CmpHelperEQ() ◆ CmpHelperEQ< FunctionPointer >() ◆ CmpHelperEQ< MemberPointer >() ◆ CmpHelperEQ< Pointer >()Definition at line 1010 of file Interp.h.
References clang::interp::Pointer::atIndex(), Compare(), clang::Equal, Fn, clang::Sema::getASTContext(), clang::interp::Pointer::getByteOffset(), clang::interp::Pointer::getOffset(), clang::interp::Pointer::hasSameBase(), clang::interp::Pointer::isArrayRoot(), clang::interp::Pointer::isOnePastEnd(), clang::interp::Pointer::isZero(), Loc, P, clang::interp::Pointer::toDiagnosticString(), and clang::Unordered.
◆ collectBlocks() static void clang::interp::collectBlocks ( const Pointer & Ptr, llvm::SetVector< const Block * > & Blocks ) staticDefinition at line 178 of file EvaluationResult.cpp.
References clang::interp::Pointer::atField(), clang::interp::Pointer::atIndex(), clang::interp::Pointer::block(), collectBlocks(), clang::interp::Pointer::deref(), clang::interp::Descriptor::ElemRecord, clang::interp::Pointer::getFieldDesc(), clang::interp::Descriptor::getNumElems(), clang::interp::Descriptor::getPrimType(), clang::interp::Descriptor::isCompositeArray(), clang::interp::Descriptor::isPrimitive(), clang::interp::Descriptor::isPrimitiveArray(), clang::interp::Pointer::narrow(), P, and PT_Ptr.
Referenced by clang::interp::EvaluationResult::checkReturnValue(), and collectBlocks().
◆ collectNonNullArgs() ◆ Comp()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the value from the stack.
2) Pushes the bitwise complemented value on the stack (~V).
Definition at line 921 of file Interp.h.
References clang::Result, and clang::T.
◆ Compare() ◆ Const()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ CopyArray()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
bool clang::interp::CopyArray ( InterpState & S, CodePtr OpPC, uint32_t SrcIndex, uint32_t DestIndex, uint32_t Size ) inline ◆ copyComposite()Definition at line 2701 of file InterpBuiltin.cpp.
References clang::interp::Pointer::atIndex(), copyComposite(), clang::interp::Pointer::deref(), clang::interp::Pointer::getFieldDesc(), clang::interp::Descriptor::getNumElems(), clang::interp::Descriptor::getPrimType(), clang::interp::Pointer::initialize(), clang::Invalid, clang::interp::Pointer::isLive(), clang::interp::Descriptor::isPrimitive(), clang::interp::Descriptor::isPrimitiveArray(), clang::interp::Descriptor::isRecord(), clang::T, and TYPE_SWITCH.
Referenced by copyComposite(), copyRecord(), and DoMemcpy().
◆ copyRecord()Definition at line 2653 of file InterpBuiltin.cpp.
References clang::interp::Pointer::activate(), clang::interp::Pointer::atField(), clang::interp::Record::bases(), copyComposite(), clang::interp::Pointer::deref(), clang::interp::Descriptor::ElemRecord, clang::interp::Record::fields(), clang::interp::Pointer::getFieldDesc(), clang::interp::Pointer::initialize(), clang::interp::Pointer::isActive(), clang::interp::Pointer::isInitialized(), clang::interp::Descriptor::isRecord(), clang::interp::Record::isUnion(), clang::T, and TYPE_SWITCH.
◆ Dec()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops a pointer from the stack 2) Load the value from the pointer 3) Writes the value decreased by one back to the pointer 4) Pushes the original (pre-dec) value on the stack.
Definition at line 845 of file Interp.h.
References clang::AK_Decrement, and CheckLoad().
◆ DecayPtr() ◆ Decf() ◆ DecfPop() ◆ DecPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops a pointer from the stack 2) Load the value from the pointer 3) Writes the value decreased by one back to the pointer
Definition at line 857 of file Interp.h.
References clang::AK_Decrement, and CheckLoad().
◆ DecPtr() ◆ Destroy() ◆ diagnoseEnumValue() ◆ diagnoseNonConstexprBuiltin() ◆ DiagnoseUninitializedSubobject() ◆ DiagTypeid() ◆ Div()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Divc()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
Definition at line 520 of file Interp.h.
References clang::interp::Pointer::atIndex(), clang::C, Compare(), D, clang::interp::Pointer::deref(), E, clang::Equal, HandleComplexComplexDiv(), clang::Result, clang::T, and Zero().
◆ Divf() ◆ DoBitCast()Definition at line 323 of file InterpBuiltinBitCast.cpp.
References CheckBitcastType(), clang::interp::BitcastBuffer::copyBits(), clang::Sema::getASTContext(), clang::ASTContext::getTargetInfo(), clang::interp::Pointer::getType(), clang::interp::Pointer::isBlockPointer(), clang::interp::Bits::isFullByte(), clang::TargetInfo::isLittleEndian(), clang::interp::Pointer::isLive(), clang::interp::BitcastBuffer::rangeInitialized(), readPointerToBuffer(), clang::interp::Bits::roundToBytes(), clang::Success, swapBytes(), and clang::interp::Bits::zero().
Referenced by BitCastPrim().
◆ DoBitCastPtr() [1/2] ◆ DoBitCastPtr() [2/2]Definition at line 363 of file InterpBuiltinBitCast.cpp.
References BITCAST_TYPE_SWITCH_FIXED_SIZE, CheckBitcastType(), clang::interp::BitcastBuffer::copyBits(), enumeratePointerFields(), clang::Sema::getASTContext(), clang::interp::Bits::getQuantity(), clang::ASTContext::getTargetInfo(), clang::interp::Pointer::getType(), clang::if(), Initialized, clang::interp::Pointer::isBlockPointer(), clang::TargetInfo::isLittleEndian(), clang::interp::Pointer::isLive(), P, PT_Bool, clang::interp::BitcastBuffer::rangeInitialized(), readPointerToBuffer(), clang::interp::Bits::roundToBytes(), clang::interp::BitcastBuffer::size(), clang::Success, swapBytes(), and clang::T.
◆ DoMemcpy() [1/2] ◆ DoMemcpy() [2/2] ◆ DoShift() ◆ Dump() ◆ Dup()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ EQ()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Error()Do nothing and just abort execution.
Definition at line 2739 of file Interp.h.
◆ ExpandPtr() ◆ FinishInit() ◆ FinishInitPop() ◆ Flip()[Value1, Value2] -> [Value2, Value1]
Definition at line 1221 of file Interp.h.
◆ Free()Definition at line 1017 of file Interp.cpp.
References clang::interp::DynamicAllocator::Array, clang::interp::Descriptor::asExpr(), clang::interp::Pointer::block(), CheckDeleteSource(), CheckDynamicMemoryAllocation(), CheckNewDeleteForms(), clang::Type::getAsCXXRecordDecl(), clang::Sema::getASTContext(), clang::interp::Pointer::getBase(), clang::interp::Pointer::getDeclDesc(), clang::interp::Block::getDescriptor(), clang::interp::Pointer::getType(), getVirtualOperatorDelete(), hasVirtualDestructor(), clang::interp::Pointer::isArrayElement(), clang::interp::Pointer::isBaseClass(), clang::interp::Pointer::isOnePastEnd(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::interp::Pointer::isRoot(), clang::interp::Pointer::isZero(), Loc, clang::interp::DynamicAllocator::NonArray, RunDestructors(), clang::T, and clang::interp::Pointer::toDiagnosticString().
◆ GE()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ getAPSIntParam() ◆ getField()Definition at line 1166 of file Interp.cpp.
References clang::AK_Read, clang::interp::Pointer::asIntPointer(), clang::interp::Pointer::atField(), clang::interp::IntPointer::atOffset(), clang::interp::Pointer::block(), CheckArray(), CheckExtern(), CheckNull(), CheckRange(), CheckSubobject(), clang::CSK_Field, clang::Sema::getASTContext(), clang::Sema::getLangOpts(), clang::interp::Block::getSize(), clang::interp::Pointer::isBlockPointer(), clang::interp::Pointer::isIntegralPointer(), and clang::interp::Pointer::toDiagnosticString().
Referenced by GetPtrField(), and GetPtrFieldPop().
◆ GetField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetFieldPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetFnPtr() ◆ GetGlobal()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetGlobalUnchecked()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ getIntPrimType() ◆ GetIntPtr()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetLocal()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ getLongPrimType() ◆ GetMemberPtr() ◆ GetMemberPtrBase() ◆ GetMemberPtrBasePop() ◆ GetMemberPtrDecl() ◆ getParam() ◆ GetParam()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetPtrActiveField() ◆ GetPtrActiveThisField() ◆ GetPtrBase() ◆ GetPtrBasePop() ◆ GetPtrDerivedPop() ◆ GetPtrField() ◆ GetPtrFieldPop() ◆ GetPtrGlobal() ◆ GetPtrLocal() ◆ GetPtrParam() ◆ GetPtrThisBase() ◆ GetPtrThisField() ◆ GetPtrThisVirtBase() ◆ GetPtrVirtBasePop() ◆ getRoundingMode() static llvm::RoundingMode clang::interp::getRoundingMode ( FPOptions FPO ) inlinestatic ◆ getSwappedBytes() [1/3] ◆ getSwappedBytes() [2/3] ◆ getSwappedBytes() [3/3] ◆ GetThisField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ GetTypeid() ◆ GetTypeidPtr() ◆ GT()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ handleFixedPointOverflow()Definition at line 1583 of file Interp.cpp.
References E, clang::Sema::getASTContext(), clang::ASTContext::getDiagnostics(), clang::Expr::getExprLoc(), clang::Expr::getType(), clang::DiagnosticsEngine::Report(), and clang::interp::FixedPoint::toDiagnosticString().
Referenced by AddSubMulHelper(), CastFixedPoint(), CastFloatingFixedPoint(), CastIntegralFixedPoint(), Div(), and ShiftFixedPoint().
◆ handleOverflow() ◆ hasVirtualDestructor() static bool clang::interp::hasVirtualDestructor ( QualType T ) static ◆ Inc()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops a pointer from the stack 2) Load the value from the pointer 3) Writes the value increased by one back to the pointer 4) Pushes the original (pre-inc) value on the stack.
Definition at line 820 of file Interp.h.
References clang::AK_Increment, and CheckLoad().
◆ IncDecFloatHelper() ◆ IncDecHelper()Definition at line 764 of file Interp.h.
References clang::interp::Pointer::deref(), E, clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Stmt::getSourceRange(), clang::Expr::getType(), handleOverflow(), Inc, clang::Invalid, clang::interp::Pointer::isDummy(), clang::Result, clang::T, toString(), and Yes.
◆ IncDecPtrHelper() ◆ Incf() ◆ IncfPop() ◆ IncPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops a pointer from the stack 2) Load the value from the pointer 3) Writes the value increased by one back to the pointer
Definition at line 832 of file Interp.h.
References clang::AK_Increment, and CheckLoad().
◆ IncPtr() ◆ Init()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitBitField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitElem()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitElemPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the value from the stack 2) Peeks a pointer from the stack 3) Pushes the value to field I of the pointer on the stack
Definition at line 1479 of file Interp.h.
References clang::T.
◆ InitGlobal()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitGlobalTemp()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitGlobalTempComp() ◆ InitPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InitScope() ◆ InitThisBitField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
bool clang::interp::InitThisBitField ( InterpState & S, CodePtr OpPC, const Record::Field * F, uint32_t FieldOffset ) ◆ InitThisField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ InRange()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ interp__builtin_abs() ◆ interp__builtin_addressof() ◆ interp__builtin_arithmetic_fence() ◆ interp__builtin_assume_aligned()__builtin_assume_aligned(Ptr, Alignment[, ExtraOffset])
Definition at line 1247 of file InterpBuiltin.cpp.
References align(), clang::CharUnits::alignTo(), clang::interp::Descriptor::asExpr(), clang::interp::Descriptor::asValueDecl(), clang::Call, callArgSize(), E, clang::CharUnits::fromQuantity(), GetAlignOfExpr(), clang::Sema::getASTContext(), clang::ASTContext::getDeclAlign(), clang::interp::Pointer::getDeclDesc(), clang::APValue::getLValueOffset(), clang::CharUnits::getQuantity(), clang::interp::Pointer::isBlockPointer(), peekToAPSInt(), primSize(), PT_Ptr, and clang::interp::Pointer::toAPValue().
Referenced by InterpretBuiltin().
◆ interp__builtin_atomic_lock_free()bool __atomic_always_lock_free(size_t, void const volatile*) bool __atomic_is_lock_free(size_t, void const volatile*) bool __c11_atomic_is_lock_free(size_t)
Definition at line 1038 of file InterpBuiltin.cpp.
References align(), clang::Call, clang::CharUnits::fromQuantity(), clang::Func, clang::Type::getAs(), clang::Sema::getASTContext(), clang::interp::Pointer::getIntegerRepresentation(), clang::TargetInfo::getMaxAtomicInlineWidth(), clang::Type::getPointeeType(), clang::ASTContext::getTargetInfo(), clang::Expr::getType(), clang::ASTContext::getTypeAlignInChars(), clang::Type::isIncompleteType(), clang::interp::Pointer::isIntegralPointer(), clang::interp::Pointer::isZero(), clang::CharUnits::One(), peekToAPSInt(), primSize(), PT_Ptr, and clang::ASTContext::toCharUnitsFromBits().
Referenced by InterpretBuiltin().
◆ interp__builtin_bitreverse() ◆ interp__builtin_bswap() ◆ interp__builtin_carryop()Three integral values followed by a pointer (lhs, rhs, carry, carryOut).
Definition at line 906 of file InterpBuiltin.cpp.
References align(), assignInteger(), clang::Call, clang::Func, clang::interp::Pointer::initialize(), peekToAPSInt(), primSize(), PT_Ptr, pushInteger(), and clang::Result.
Referenced by InterpretBuiltin().
◆ interp__builtin_classify_type() ◆ interp__builtin_clrsb() ◆ interp__builtin_clz() ◆ interp__builtin_complex() ◆ interp__builtin_constant_p()Definition at line 1512 of file InterpBuiltin.cpp.
References clang::C, clang::Call, clang::interp::InterpStack::clear(), clang::SemaBase::Diag(), E, clang::APValue::getLValueBase(), clang::APValue::getLValueOffset(), clang::Expr::getType(), clang::Type::isAnyComplexType(), clang::Type::isFloatingType(), clang::Expr::isGLValue(), clang::Type::isIntegralOrEnumerationType(), clang::APValue::isLValue(), clang::Type::isNullPtrType(), clang::Type::isPointerType(), clang::CharUnits::isZero(), and pushInteger().
Referenced by InterpretBuiltin().
◆ interp__builtin_copysign() ◆ interp__builtin_ctz() ◆ interp__builtin_eh_return_data_regno() ◆ interp__builtin_elementwise_popcount()Can be called with an integer or vector as the first and only parameter.
Definition at line 1806 of file InterpBuiltin.cpp.
References clang::interp::Pointer::atIndex(), clang::Call, clang::interp::Pointer::deref(), clang::interp::Descriptor::getElemQualType(), clang::interp::Pointer::getFieldDesc(), clang::interp::Descriptor::getNumElems(), clang::interp::Pointer::getNumElems(), clang::interp::Pointer::initialize(), INT_TYPE_SWITCH_NO_BOOL, clang::interp::Descriptor::isPrimitiveArray(), peekToAPSInt(), primSize(), PT_Ptr, pushInteger(), and clang::T.
Referenced by InterpretBuiltin().
◆ interp__builtin_expect() ◆ interp__builtin_fabs() ◆ interp__builtin_ffs() ◆ interp__builtin_fmax() ◆ interp__builtin_fmin() ◆ interp__builtin_fpclassify() ◆ interp__builtin_ia32_addcarry_subborrow() ◆ interp__builtin_ia32_bextr() ◆ interp__builtin_ia32_bzhi() ◆ interp__builtin_ia32_lzcnt() ◆ interp__builtin_ia32_pdep() ◆ interp__builtin_ia32_pext() ◆ interp__builtin_ia32_tzcnt() ◆ interp__builtin_inf() ◆ interp__builtin_is_aligned_up_down()__builtin_is_aligned() __builtin_align_up() __builtin_align_down() The first parameter is either an integer or a pointer.
The second parameter is the requested alignment as an integer.
Definition at line 1140 of file InterpBuiltin.cpp.
References clang::CharUnits::alignmentAtOffset(), clang::interp::Descriptor::asValueDecl(), clang::interp::Pointer::atIndex(), clang::Call, callArgSize(), clang::CharUnits::fromQuantity(), clang::Func, clang::Sema::getASTContext(), clang::interp::Pointer::getByteOffset(), clang::ASTContext::getDeclAlign(), clang::interp::Pointer::getDeclDesc(), clang::interp::Pointer::getIndex(), clang::ASTContext::getIntWidth(), clang::CharUnits::getQuantity(), isIntegralType(), peekToAPSInt(), PT_Bool, PT_Ptr, and pushInteger().
Referenced by InterpretBuiltin().
◆ interp__builtin_is_constant_evaluated() ◆ interp__builtin_isfinite() ◆ interp__builtin_isfpclass() ◆ interp__builtin_isinf() ◆ interp__builtin_isnan() ◆ interp__builtin_isnormal() ◆ interp__builtin_issignaling() ◆ interp__builtin_issubnormal() ◆ interp__builtin_iszero() ◆ interp__builtin_memcmp()Definition at line 1957 of file InterpBuiltin.cpp.
References clang::ASTContext::BuiltinInfo, clang::interp::BitcastBuffer::byteSize(), clang::Call, clang::interp::BitcastBuffer::Data, diagnoseNonConstexprBuiltin(), clang::Func, clang::Sema::getASTContext(), clang::interp::Pointer::getFieldDesc(), clang::CharUnits::getQuantity(), clang::interp::Bytes::getQuantity(), clang::Builtin::Context::getQuotedName(), clang::ASTContext::getTargetInfo(), clang::interp::Descriptor::getType(), clang::interp::Pointer::getType(), clang::ASTContext::getTypeSize(), clang::ASTContext::getTypeSizeInChars(), clang::ASTContext::getWCharType(), clang::if(), INT_TYPE_SWITCH, clang::TargetInfo::isBigEndian(), clang::interp::Pointer::isDummy(), isOneByteCharacterType(), peekToAPSInt(), pushInteger(), readPointerToBuffer(), and swapBytes().
Referenced by InterpretBuiltin().
◆ interp__builtin_memcpy()Definition at line 1842 of file InterpBuiltin.cpp.
References clang::Call, diagnoseNonConstexprBuiltin(), DoMemcpy(), clang::interp::Pointer::elemSize(), clang::Func, clang::Sema::getASTContext(), clang::interp::Descriptor::getElemQualType(), clang::interp::Pointer::getFieldDesc(), clang::interp::Pointer::getIndex(), clang::interp::Pointer::getNumElems(), clang::CharUnits::getQuantity(), clang::interp::Pointer::getType(), clang::ASTContext::getTypeSizeInChars(), clang::ASTContext::hasSameUnqualifiedType(), clang::interp::Descriptor::isArray(), clang::interp::Pointer::isDummy(), clang::interp::Pointer::isUnknownSizeArray(), clang::interp::Pointer::isZero(), peekToAPSInt(), clang::interp::Pointer::pointToSameBlock(), clang::interp::Bytes::toBits(), clang::interp::Pointer::toDiagnosticString(), and toString().
Referenced by InterpretBuiltin().
◆ interp__builtin_move() ◆ interp__builtin_nan()Definition at line 311 of file InterpBuiltin.cpp.
References clang::interp::Pointer::atIndex(), CheckLoad(), clang::interp::Pointer::deref(), clang::Sema::getASTContext(), clang::interp::Function::getDecl(), clang::interp::Pointer::getFieldDesc(), clang::ASTContext::getFloatTypeSemantics(), clang::interp::Pointer::getNumElems(), clang::FunctionDecl::getReturnType(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::isNan2008(), clang::interp::Descriptor::isPrimitiveArray(), and clang::Result.
Referenced by InterpretBuiltin().
◆ interp__builtin_operator_delete() ◆ interp__builtin_operator_new()Definition at line 1582 of file InterpBuiltin.cpp.
References clang::Call, clang::Func, clang::Sema::getASTContext(), clang::Sema::getLangOpts(), clang::ConstantArrayType::getMaxSizeBits(), clang::CharUnits::getQuantity(), clang::QualType::getTypePtr(), clang::ASTContext::getTypeSizeInChars(), clang::interp::Descriptor::InlineDescMD, clang::Type::isFunctionType(), clang::Type::isIncompleteType(), clang::QualType::isNull(), clang::IdentifierInfo::isStr(), clang::CharUnits::isZero(), Loc, clang::interp::Descriptor::MaxArrayElemBytes, clang::interp::DynamicAllocator::Operator, peekToAPSInt(), clang::TemplateArgumentList::size(), and clang::TemplateArgument::Type.
Referenced by InterpretBuiltin().
◆ interp__builtin_os_log_format_buffer_size() ◆ interp__builtin_overflowop()Definition at line 799 of file InterpBuiltin.cpp.
References align(), assignInteger(), clang::Call, clang::Func, clang::Sema::getASTContext(), clang::ASTContext::getTypeSize(), clang::interp::Pointer::initialize(), clang::interp::Pointer::isDummy(), clang::Type::isSignedIntegerOrEnumerationType(), peekToAPSInt(), primSize(), PT_Ptr, and clang::Result.
Referenced by InterpretBuiltin().
◆ interp__builtin_parity() ◆ interp__builtin_popcount() ◆ interp__builtin_ptrauth_string_discriminator() ◆ interp__builtin_rotate() ◆ interp__builtin_signbit() ◆ interp__builtin_strcmp()Definition at line 194 of file InterpBuiltin.cpp.
References clang::AK_Read, clang::interp::Pointer::atIndex(), clang::Call, CheckLive(), CheckRange(), clang::interp::Pointer::deref(), diagnoseNonConstexprBuiltin(), clang::Func, clang::interp::Pointer::getFieldDesc(), clang::interp::Pointer::getIndex(), clang::interp::Pointer::isDummy(), clang::interp::Descriptor::isPrimitiveArray(), peekToAPSInt(), pushInteger(), and clang::Result.
Referenced by InterpretBuiltin().
◆ interp__builtin_strlen()Definition at line 255 of file InterpBuiltin.cpp.
References clang::AK_Read, clang::interp::Pointer::atIndex(), clang::Call, CheckArray(), CheckDummy(), CheckLive(), CheckRange(), clang::interp::Pointer::deref(), diagnoseNonConstexprBuiltin(), clang::Func, clang::Sema::getASTContext(), clang::interp::Descriptor::getElemSize(), clang::interp::Pointer::getFieldDesc(), clang::interp::Pointer::getIndex(), clang::interp::Descriptor::isPrimitiveArray(), and pushInteger().
Referenced by InterpretBuiltin().
◆ interp__builtin_vector_reduce()Definition at line 1752 of file InterpBuiltin.cpp.
References clang::interp::Pointer::atIndex(), clang::Call, clang::Func, clang::interp::Descriptor::getElemQualType(), clang::interp::Pointer::getFieldDesc(), clang::interp::Pointer::getNumElems(), handleOverflow(), INT_TYPE_SWITCH_NO_BOOL, clang::interp::Descriptor::isPrimitiveArray(), pushInteger(), clang::Result, and clang::T.
Referenced by InterpretBuiltin().
◆ interp_floating_comparison() ◆ Interpret() ◆ InterpretBuiltin()Interpret a builtin function.
Definition at line 2065 of file InterpBuiltin.cpp.
References clang::Call, interp__builtin_abs(), interp__builtin_addressof(), interp__builtin_arithmetic_fence(), interp__builtin_assume_aligned(), interp__builtin_atomic_lock_free(), interp__builtin_bitreverse(), interp__builtin_bswap(), interp__builtin_carryop(), interp__builtin_classify_type(), interp__builtin_clrsb(), interp__builtin_clz(), interp__builtin_complex(), interp__builtin_constant_p(), interp__builtin_copysign(), interp__builtin_ctz(), interp__builtin_eh_return_data_regno(), interp__builtin_elementwise_popcount(), interp__builtin_expect(), interp__builtin_fabs(), interp__builtin_ffs(), interp__builtin_fmax(), interp__builtin_fmin(), interp__builtin_fpclassify(), interp__builtin_ia32_addcarry_subborrow(), interp__builtin_ia32_bextr(), interp__builtin_ia32_bzhi(), interp__builtin_ia32_lzcnt(), interp__builtin_ia32_pdep(), interp__builtin_ia32_pext(), interp__builtin_ia32_tzcnt(), interp__builtin_inf(), interp__builtin_is_aligned_up_down(), interp__builtin_is_constant_evaluated(), interp__builtin_isfinite(), interp__builtin_isfpclass(), interp__builtin_isinf(), interp__builtin_isnan(), interp__builtin_isnormal(), interp__builtin_issignaling(), interp__builtin_issubnormal(), interp__builtin_iszero(), interp__builtin_memcmp(), interp__builtin_memcpy(), interp__builtin_move(), interp__builtin_nan(), interp__builtin_operator_delete(), interp__builtin_operator_new(), interp__builtin_os_log_format_buffer_size(), interp__builtin_overflowop(), interp__builtin_parity(), interp__builtin_popcount(), interp__builtin_ptrauth_string_discriminator(), interp__builtin_rotate(), interp__builtin_signbit(), interp__builtin_strcmp(), interp__builtin_strlen(), interp__builtin_vector_reduce(), interp_floating_comparison(), InterpretBuiltin(), noopPointer(), pushInteger(), and retPrimValue().
Referenced by CallBI(), and InterpretBuiltin().
◆ InterpretOffsetOf()Interpret an offsetof operation.
Definition at line 2559 of file InterpBuiltin.cpp.
References clang::OffsetOfNode::Array, clang::OffsetOfNode::Base, E, clang::OffsetOfNode::Field, clang::Type::getAs(), clang::ASTContext::getAsArrayType(), clang::Sema::getASTContext(), clang::ASTContext::getASTRecordLayout(), clang::ASTRecordLayout::getBaseClassOffset(), clang::RecordType::getDecl(), clang::ArrayType::getElementType(), clang::ASTRecordLayout::getFieldCount(), clang::FieldDecl::getFieldIndex(), clang::ASTRecordLayout::getFieldOffset(), clang::QualType::getNonReferenceType(), clang::ValueDecl::getType(), clang::CXXBaseSpecifier::getType(), clang::Expr::getType(), clang::ASTContext::getTypeSizeInChars(), clang::OffsetOfNode::Identifier, InterpretOffsetOf(), clang::Decl::isInvalidDecl(), clang::CXXBaseSpecifier::isVirtual(), Node, clang::Result, and clang::ASTContext::toCharUnitsFromBits().
Referenced by InterpretOffsetOf(), and OffsetOf().
◆ Inv() ◆ Invalid()Just emit a diagnostic.
The expression that caused emission of this op is not valid in a constant context.
Definition at line 2724 of file Interp.h.
References Loc.
◆ InvalidCast() ◆ InvalidDeclRef() ◆ InvalidNewDeleteExpr() ◆ InvalidShuffleVectorIndex() ◆ IsConstantContext() ◆ isIntegralType() ◆ IsNonNull()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ isOneByteCharacterType() static bool clang::interp::isOneByteCharacterType ( QualType T ) static ◆ isPtrType() ◆ LE()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Load()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ LoadPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ LT()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Memcpy() ◆ Mul()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Mulc()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Mulf() ◆ NarrowPtr() ◆ NE()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Neg()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ noopPointer() ◆ NoRet() ◆ Null()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ OffsetHelper()Definition at line 1878 of file Interp.h.
References Add, clang::interp::Pointer::asBlockPointer(), clang::interp::Pointer::asFunctionPointer(), clang::interp::Pointer::asIntPointer(), clang::interp::Pointer::atIndex(), clang::interp::BlockPointer::Base, CheckArray(), CheckNull(), clang::CSK_ArrayIndex, clang::interp::IntPointer::Desc, clang::interp::Pointer::elemSize(), clang::interp::Pointer::getByteOffset(), clang::interp::FunctionPointer::getFunction(), clang::interp::Pointer::getIndex(), clang::interp::Pointer::getIntegerRepresentation(), clang::Sema::getLangOpts(), clang::interp::Pointer::getNumElems(), clang::interp::Pointer::inArray(), clang::Invalid, clang::interp::Pointer::isBlockPointer(), clang::interp::Pointer::isFunctionPointer(), clang::interp::Pointer::isIntegralPointer(), clang::interp::Pointer::isOnePastEnd(), clang::interp::BlockPointer::Pointee, clang::Result, and V.
◆ OffsetOf()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ operator<<() [1/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, const Boolean & B ) inline ◆ operator<<() [2/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, const Pointer & P ) inline ◆ operator<<() [3/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, FixedPoint F ) inline ◆ operator<<() [4/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, Floating F ) ◆ operator<<() [5/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, FunctionPointer FP ) inline ◆ operator<<() [6/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, Integral< Bits, Signed > I ) ◆ operator<<() [7/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, IntegralAP< Signed > I ) inline ◆ operator<<() [8/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, interp::CastKind CK ) inline ◆ operator<<() [9/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream & OS, MemberPointer FP ) inline ◆ peekToAPSInt()Peek an integer value from the stack into an APSInt.
Definition at line 76 of file InterpBuiltin.cpp.
References align(), INT_TYPE_SWITCH, clang::interp::InterpStack::peek(), primSize(), and clang::T.
Referenced by interp__builtin_abs(), interp__builtin_assume_aligned(), interp__builtin_atomic_lock_free(), interp__builtin_bitreverse(), interp__builtin_bswap(), interp__builtin_carryop(), interp__builtin_clrsb(), interp__builtin_clz(), interp__builtin_ctz(), interp__builtin_eh_return_data_regno(), interp__builtin_elementwise_popcount(), interp__builtin_expect(), interp__builtin_ffs(), interp__builtin_fpclassify(), interp__builtin_ia32_bextr(), interp__builtin_ia32_bzhi(), interp__builtin_ia32_lzcnt(), interp__builtin_ia32_pdep(), interp__builtin_ia32_pext(), interp__builtin_ia32_tzcnt(), interp__builtin_is_aligned_up_down(), interp__builtin_isfpclass(), interp__builtin_memcmp(), interp__builtin_memcpy(), interp__builtin_operator_new(), interp__builtin_overflowop(), interp__builtin_parity(), interp__builtin_popcount(), interp__builtin_rotate(), and interp__builtin_strcmp().
◆ Pop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ popArg() ◆ primSize()Returns the size of a primitive type in bytes.
Definition at line 23 of file PrimType.cpp.
References clang::T, and TYPE_SWITCH.
Referenced by AllocN(), Call(), callArgSize(), CallPtr(), CallVar(), CallVirt(), CheckNonNullArgs(), clang::interp::ByteCodeEmitter::compileFunc(), clang::interp::ByteCodeEmitter::compileObjCBlock(), clang::interp::Program::createDescriptor(), clang::interp::InterpFrame::describe(), clang::interp::InterpStack::dump(), clang::interp::Function::getWrittenArgSize(), interp__builtin_assume_aligned(), interp__builtin_atomic_lock_free(), interp__builtin_carryop(), interp__builtin_complex(), interp__builtin_elementwise_popcount(), interp__builtin_expect(), interp__builtin_fpclassify(), interp__builtin_ia32_bextr(), interp__builtin_ia32_bzhi(), interp__builtin_ia32_pdep(), interp__builtin_ia32_pext(), interp__builtin_isfpclass(), interp__builtin_overflowop(), interp__builtin_rotate(), interp_floating_comparison(), peekToAPSInt(), clang::interp::Compiler< Emitter >::VisitCallExpr(), clang::interp::Compiler< Emitter >::VisitCXXConstructExpr(), and clang::interp::Compiler< Emitter >::VisitCXXInheritedCtorInitExpr().
◆ PtrPtrCast() ◆ pushInteger() [1/2]Pushes Val
on the stack as the type given by QT
.
Definition at line 87 of file InterpBuiltin.cpp.
References clang::Sema::getASTContext(), clang::ASTContext::getTypeSize(), INT_TYPE_SWITCH, clang::Type::isSignedIntegerOrEnumerationType(), clang::Type::isUnsignedIntegerOrEnumerationType(), clang::T, and V.
Referenced by interp__builtin_abs(), interp__builtin_bitreverse(), interp__builtin_carryop(), interp__builtin_classify_type(), interp__builtin_clrsb(), interp__builtin_clz(), interp__builtin_constant_p(), interp__builtin_ctz(), interp__builtin_eh_return_data_regno(), interp__builtin_elementwise_popcount(), interp__builtin_expect(), interp__builtin_ffs(), interp__builtin_fpclassify(), interp__builtin_ia32_addcarry_subborrow(), interp__builtin_ia32_bextr(), interp__builtin_ia32_bzhi(), interp__builtin_ia32_lzcnt(), interp__builtin_ia32_pdep(), interp__builtin_ia32_pext(), interp__builtin_ia32_tzcnt(), interp__builtin_is_aligned_up_down(), interp__builtin_isfinite(), interp__builtin_isfpclass(), interp__builtin_isinf(), interp__builtin_isnan(), interp__builtin_isnormal(), interp__builtin_issignaling(), interp__builtin_issubnormal(), interp__builtin_iszero(), interp__builtin_memcmp(), interp__builtin_os_log_format_buffer_size(), interp__builtin_parity(), interp__builtin_popcount(), interp__builtin_ptrauth_string_discriminator(), interp__builtin_rotate(), interp__builtin_signbit(), interp__builtin_strcmp(), interp__builtin_strlen(), interp__builtin_vector_reduce(), interp_floating_comparison(), InterpretBuiltin(), and pushInteger().
◆ pushInteger() [2/2] ◆ ReadArg() ◆ ReadArg< FixedPoint >() ◆ ReadArg< Floating >() ◆ ReadArg< IntegralAP< false > >() ◆ ReadArg< IntegralAP< true > >() ◆ readPointerToBuffer()Definition at line 257 of file InterpBuiltinBitCast.cpp.
References BITCAST_TYPE_SWITCH, clang::interp::Floating::bitcastToMemory(), enumeratePointerFields(), clang::interp::Floating::getAPFloat(), clang::interp::Bits::getQuantity(), clang::ASTContext::getTargetInfo(), clang::if(), clang::TargetInfo::isLittleEndian(), clang::interp::BitcastBuffer::markInitialized(), P, PT_Float, clang::interp::BitcastBuffer::pushData(), clang::interp::Bits::roundToBytes(), clang::interp::BitcastBuffer::size(), swapBytes(), and clang::T.
Referenced by DoBitCast(), DoBitCastPtr(), and interp__builtin_memcmp().
◆ Rem()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the RHS from the stack.
2) Pops the LHS from the stack. 3) Pushes 'LHS % RHS' on the stack (the remainder of dividing LHS by RHS).
Definition at line 653 of file Interp.h.
References CheckDivRem(), clang::Result, and clang::T.
◆ Ret()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ retPrimValue()Definition at line 123 of file InterpBuiltin.cpp.
References PT_Bool, PT_Float, PT_FnPtr, PT_IntAP, PT_IntAPS, PT_Ptr, PT_Sint16, PT_Sint32, PT_Sint64, PT_Sint8, PT_Uint16, PT_Uint32, PT_Uint64, PT_Uint8, RET_CASE, RetVoid(), and clang::T.
Referenced by InterpretBuiltin().
◆ RetVoid() ◆ RunDestructors() ◆ runRecordDestructor() ◆ RVOPtr() ◆ SetField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ SetGlobal() ◆ SetLocal()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops the value from the stack.
2) Writes the value to the local variable with the given offset.
Definition at line 1261 of file Interp.h.
References clang::T.
◆ SetParam()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ SetThisField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ SetThreeWayComparisonField()Sets the given integral value to the pointer, which is of a std::{weak,partial,strong}_ordering type.
Definition at line 2634 of file InterpBuiltin.cpp.
References clang::interp::Pointer::atField(), clang::interp::Pointer::deref(), clang::interp::Record::getField(), clang::interp::Record::getNumFields(), clang::interp::Pointer::getRecord(), clang::interp::Pointer::getType(), clang::interp::Pointer::initialize(), INT_TYPE_SWITCH, clang::interp::Record::Field::Offset, SetThreeWayComparisonField(), and clang::T.
Referenced by CMP3(), and SetThreeWayComparisonField().
◆ ShiftFixedPoint() ◆ Shl() ◆ Shr() ◆ SideEffect() ◆ SizelessVectorElementSize() ◆ Store()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ StoreBitField()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ StoreBitFieldPop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ StorePop()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Sub()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ Subf() ◆ SubOffset()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ SubPtr()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
1) Pops a Pointer from the stack.
2) Pops another Pointer from the stack. 3) Pushes the different of the indices of the two pointers on the stack.
Definition at line 2057 of file Interp.h.
References clang::Sema::getASTContext(), clang::ASTContext::getConstantArrayType(), clang::interp::Pointer::getIndex(), clang::interp::Pointer::getIntegerRepresentation(), clang::Sema::getLangOpts(), clang::interp::Pointer::getNumElems(), clang::interp::Pointer::hasSameBase(), clang::interp::Pointer::isBlockPointer(), clang::interp::Pointer::isElementPastEnd(), clang::interp::Pointer::isZero(), clang::Normal, P, and clang::T.
◆ swapBytes() static void clang::interp::swapBytes ( std::byte * M, size_t N ) inlinestatic ◆ This()Definition at line 2383 of file Interp.h.
References CheckThis(), and This().
Referenced by CheckThis(), GetPtrActiveThisField(), GetPtrThisBase(), GetPtrThisField(), GetPtrThisVirtBase(), GetThisField(), InitThisBitField(), InitThisField(), SetThisField(), and This().
◆ ToMemberPtr() ◆ Unsupported() ◆ VirtBaseHelper() ◆ Zero()template<
PrimTypeName, class
T= typename PrimConv<Name>::T>
◆ ZeroIntAP() ◆ ZeroIntAPS()RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4