|
bool | clang::interp::CheckExtern (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if the variable has externally defined storage.
|
|
bool | clang::interp::CheckArray (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if the array is offsetable.
|
|
bool | clang::interp::CheckLive (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK) |
| Checks if a pointer is live and accessible.
|
|
bool | clang::interp::CheckDummy (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK) |
| Checks if a pointer is a dummy pointer.
|
|
bool | clang::interp::CheckNull (InterpState &S, CodePtr OpPC, const Pointer &Ptr, CheckSubobjectKind CSK) |
| Checks if a pointer is null.
|
|
bool | clang::interp::CheckRange (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK) |
| Checks if a pointer is in range.
|
|
bool | clang::interp::CheckRange (InterpState &S, CodePtr OpPC, const Pointer &Ptr, CheckSubobjectKind CSK) |
| Checks if a field from which a pointer is going to be derived is valid.
|
|
bool | clang::interp::CheckSubobject (InterpState &S, CodePtr OpPC, const Pointer &Ptr, CheckSubobjectKind CSK) |
| Checks if Ptr is a one-past-the-end pointer.
|
|
bool | clang::interp::CheckDowncast (InterpState &S, CodePtr OpPC, const Pointer &Ptr, uint32_t Offset) |
| Checks if the dowcast using the given offset is possible with the given pointer.
|
|
bool | clang::interp::CheckConst (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a pointer points to const storage.
|
|
bool | clang::interp::CheckConstant (InterpState &S, CodePtr OpPC, const Descriptor *Desc) |
| Checks if the Descriptor is of a constexpr or const global variable.
|
|
bool | clang::interp::CheckMutable (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a pointer points to a mutable field.
|
|
bool | clang::interp::CheckLoad (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK=AK_Read) |
| Checks if a value can be loaded from a block.
|
|
bool | clang::interp::CheckFinalLoad (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| This is not used by any of the opcodes directly.
|
|
bool | clang::interp::CheckInitialized (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK) |
|
bool | clang::interp::CheckGlobalInitialized (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Check if a global variable is initialized.
|
|
bool | clang::interp::CheckStore (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a value can be stored in a block.
|
|
bool | clang::interp::CheckInvoke (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a method can be invoked on an object.
|
|
bool | clang::interp::CheckInit (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a value can be initialized.
|
|
bool | clang::interp::CheckCallable (InterpState &S, CodePtr OpPC, const Function *F) |
| Checks if a method can be called.
|
|
bool | clang::interp::CheckCallDepth (InterpState &S, CodePtr OpPC) |
| Checks if calling the currently active function would exceed the allowed call depth.
|
|
bool | clang::interp::CheckThis (InterpState &S, CodePtr OpPC, const Pointer &This) |
| Checks the 'this' pointer.
|
|
bool | clang::interp::CheckPure (InterpState &S, CodePtr OpPC, const CXXMethodDecl *MD) |
| Checks if a method is pure virtual.
|
|
bool | clang::interp::CheckNonNullArgs (InterpState &S, CodePtr OpPC, const Function *F, const CallExpr *CE, unsigned ArgSize) |
| Checks if all the arguments annotated as 'nonnull' are in fact not null.
|
|
bool | clang::interp::CheckDynamicMemoryAllocation (InterpState &S, CodePtr OpPC) |
| Checks if dynamic memory allocation is available in the current language mode.
|
|
bool | clang::interp::CheckNewDeleteForms (InterpState &S, CodePtr OpPC, DynamicAllocator::Form AllocForm, DynamicAllocator::Form DeleteForm, const Descriptor *D, const Expr *NewExpr) |
| Diagnose mismatched new[]/delete or new/delete[] pairs.
|
|
bool | clang::interp::CheckDeleteSource (InterpState &S, CodePtr OpPC, const Expr *Source, const Pointer &Ptr) |
| Check the source of the pointer passed to delete/delete[] has actually been heap allocated by us.
|
|
bool | clang::interp::SetThreeWayComparisonField (InterpState &S, CodePtr OpPC, const Pointer &Ptr, const APSInt &IntValue) |
| Sets the given integral value to the pointer, which is of a std::{weak,partial,strong}_ordering type.
|
|
bool | clang::interp::DoMemcpy (InterpState &S, CodePtr OpPC, const Pointer &Src, Pointer &Dest) |
| Copy the contents of Src into Dest.
|
|
bool | clang::interp::CallVar (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize) |
|
bool | clang::interp::Call (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize) |
|
bool | clang::interp::CallVirt (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize) |
|
bool | clang::interp::CallBI (InterpState &S, CodePtr OpPC, const Function *Func, const CallExpr *CE, uint32_t BuiltinID) |
|
bool | clang::interp::CallPtr (InterpState &S, CodePtr OpPC, uint32_t ArgSize, const CallExpr *CE) |
|
bool | clang::interp::CheckLiteralType (InterpState &S, CodePtr OpPC, const Type *T) |
|
bool | clang::interp::InvalidShuffleVectorIndex (InterpState &S, CodePtr OpPC, uint32_t Index) |
|
bool | clang::interp::CheckBitCast (InterpState &S, CodePtr OpPC, bool HasIndeterminateBits, bool TargetIsUCharOrByte) |
|
template<typename T > |
static bool | clang::interp::handleOverflow (InterpState &S, CodePtr OpPC, const T &SrcValue) |
|
bool | clang::interp::handleFixedPointOverflow (InterpState &S, CodePtr OpPC, const FixedPoint &FP) |
|
template<ShiftDir Dir, typename LT , typename RT > |
bool | clang::interp::CheckShift (InterpState &S, CodePtr OpPC, const LT &LHS, const RT &RHS, unsigned Bits) |
| Checks if the shift operation is legal.
|
|
template<typename T > |
bool | clang::interp::CheckDivRem (InterpState &S, CodePtr OpPC, const T &LHS, const T &RHS) |
| Checks if Div/Rem operation on LHS and RHS is valid.
|
|
template<typename SizeT > |
bool | clang::interp::CheckArraySize (InterpState &S, CodePtr OpPC, SizeT *NumElements, unsigned ElemSize, bool IsNoThrow) |
|
bool | clang::interp::CheckFloatResult (InterpState &S, CodePtr OpPC, const Floating &Result, APFloat::opStatus Status, FPOptions FPO) |
| Checks if the result of a floating-point operation is valid in the current context.
|
|
bool | clang::interp::CheckDeclRef (InterpState &S, CodePtr OpPC, const DeclRefExpr *DR) |
| We aleady know the given DeclRefExpr is invalid for some reason, now figure out why and print appropriate diagnostics.
|
|
bool | clang::interp::Interpret (InterpState &S) |
| Interpreter entry point.
|
|
bool | clang::interp::InterpretBuiltin (InterpState &S, CodePtr OpPC, const Function *F, const CallExpr *Call, uint32_t BuiltinID) |
| Interpret a builtin function.
|
|
bool | clang::interp::InterpretOffsetOf (InterpState &S, CodePtr OpPC, const OffsetOfExpr *E, llvm::ArrayRef< int64_t > ArrayIndices, int64_t &Result) |
| Interpret an offsetof operation.
|
|
bool | clang::interp::Invalid (InterpState &S, CodePtr OpPC) |
| Just emit a diagnostic.
|
|
void | clang::interp::cleanupAfterFunctionCall (InterpState &S, CodePtr OpPC, const Function *Func) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Ret (InterpState &S, CodePtr &PC) |
|
bool | clang::interp::RetVoid (InterpState &S, CodePtr &PC) |
|
template<typename T , bool(*)(T, T, unsigned, T *) OpFW, template< typename U > class OpAP> |
bool | clang::interp::AddSubMulHelper (InterpState &S, CodePtr OpPC, unsigned Bits, const T &LHS, const T &RHS) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Add (InterpState &S, CodePtr OpPC) |
|
static llvm::RoundingMode | clang::interp::getRoundingMode (FPOptions FPO) |
|
bool | clang::interp::Addf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Sub (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Subf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Mul (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Mulf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Mulc (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Divc (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::BitAnd (InterpState &S, CodePtr OpPC) |
| 1) Pops the RHS from the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::BitOr (InterpState &S, CodePtr OpPC) |
| 1) Pops the RHS from the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::BitXor (InterpState &S, CodePtr OpPC) |
| 1) Pops the RHS from the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Rem (InterpState &S, CodePtr OpPC) |
| 1) Pops the RHS from the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Div (InterpState &S, CodePtr OpPC) |
| 1) Pops the RHS from the stack.
|
|
bool | clang::interp::Divf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
bool | clang::interp::Inv (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Neg (InterpState &S, CodePtr OpPC) |
|
template<typename T , IncDecOp Op, PushVal DoPush> |
bool | clang::interp::IncDecHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Inc (InterpState &S, CodePtr OpPC) |
| 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.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::IncPop (InterpState &S, CodePtr OpPC) |
| 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
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Dec (InterpState &S, CodePtr OpPC) |
| 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.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::DecPop (InterpState &S, CodePtr OpPC) |
| 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
|
|
template<IncDecOp Op, PushVal DoPush> |
bool | clang::interp::IncDecFloatHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr, uint32_t FPOI) |
|
bool | clang::interp::Incf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
bool | clang::interp::IncfPop (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
bool | clang::interp::Decf (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
bool | clang::interp::DecfPop (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Comp (InterpState &S, CodePtr OpPC) |
| 1) Pops the value from the stack.
|
|
template<typename T > |
bool | clang::interp::CmpHelper (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<typename T > |
bool | clang::interp::CmpHelperEQ (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<> |
bool | clang::interp::CmpHelper< FunctionPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn) |
| Function pointers cannot be compared in an ordered way.
|
|
template<> |
bool | clang::interp::CmpHelperEQ< FunctionPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<> |
bool | clang::interp::CmpHelper< Pointer > (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<> |
bool | clang::interp::CmpHelperEQ< Pointer > (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<> |
bool | clang::interp::CmpHelperEQ< MemberPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::EQ (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CMP3 (InterpState &S, CodePtr OpPC, const ComparisonCategoryInfo *CmpInfo) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::NE (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::LT (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::LE (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GT (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GE (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InRange (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Dup (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Pop (InterpState &S, CodePtr OpPC) |
|
template<PrimType TopName, PrimType BottomName> |
bool | clang::interp::Flip (InterpState &S, CodePtr OpPC) |
| [Value1, Value2] -> [Value2, Value1]
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Const (InterpState &S, CodePtr OpPC, const T &Arg) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetLocal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SetLocal (InterpState &S, CodePtr OpPC, uint32_t I) |
| 1) Pops the value from the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetParam (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SetParam (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetField (InterpState &S, CodePtr OpPC, uint32_t I) |
| 1) Peeks a pointer on the stack 2) Pushes the value of the pointer's field on the stack
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SetField (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetFieldPop (InterpState &S, CodePtr OpPC, uint32_t I) |
| 1) Pops a pointer from the stack 2) Pushes the value of the pointer's field on the stack
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetThisField (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SetThisField (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetGlobal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetGlobalUnchecked (InterpState &S, CodePtr OpPC, uint32_t I) |
| Same as GetGlobal, but without the checks.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SetGlobal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitGlobal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitGlobalTemp (InterpState &S, CodePtr OpPC, uint32_t I, const LifetimeExtendedTemporaryDecl *Temp) |
| 1) Converts the value on top of the stack to an APValue 2) Sets that APValue on \Temp 3) Initializes global with index \I with that
|
|
bool | clang::interp::InitGlobalTempComp (InterpState &S, CodePtr OpPC, const LifetimeExtendedTemporaryDecl *Temp) |
| 1) Converts the value on top of the stack to an APValue 2) Sets that APValue on \Temp 3) Initialized global with index \I with that
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitThisField (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitThisBitField (InterpState &S, CodePtr OpPC, const Record::Field *F, uint32_t FieldOffset) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitField (InterpState &S, CodePtr OpPC, uint32_t I) |
| 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
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitBitField (InterpState &S, CodePtr OpPC, const Record::Field *F) |
|
bool | clang::interp::GetPtrLocal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
bool | clang::interp::GetPtrParam (InterpState &S, CodePtr OpPC, uint32_t I) |
|
bool | clang::interp::GetPtrGlobal (InterpState &S, CodePtr OpPC, uint32_t I) |
|
bool | clang::interp::GetPtrField (InterpState &S, CodePtr OpPC, uint32_t Off) |
| 1) Peeks a Pointer 2) Pushes Pointer.atField(Off) on the stack
|
|
bool | clang::interp::GetPtrFieldPop (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrThisField (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrActiveField (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrActiveThisField (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrDerivedPop (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrBase (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrBasePop (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetMemberPtrBasePop (InterpState &S, CodePtr OpPC, int32_t Off) |
|
bool | clang::interp::GetPtrThisBase (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::FinishInitPop (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::FinishInit (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Dump (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::VirtBaseHelper (InterpState &S, CodePtr OpPC, const RecordDecl *Decl, const Pointer &Ptr) |
|
bool | clang::interp::GetPtrVirtBasePop (InterpState &S, CodePtr OpPC, const RecordDecl *D) |
|
bool | clang::interp::GetPtrThisVirtBase (InterpState &S, CodePtr OpPC, const RecordDecl *D) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Load (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::LoadPop (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Store (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::StorePop (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::StoreBitField (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::StoreBitFieldPop (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Init (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitPop (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitElem (InterpState &S, CodePtr OpPC, uint32_t Idx) |
| 1) Pops the value from the stack 2) Peeks a pointer and gets its index \Idx 3) Sets the value on the pointer, leaving the pointer on the stack.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitElemPop (InterpState &S, CodePtr OpPC, uint32_t Idx) |
| The same as InitElem, but pops the pointer as well.
|
|
bool | clang::interp::Memcpy (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::ToMemberPtr (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::CastMemberPtrPtr (InterpState &S, CodePtr OpPC) |
|
template<class T , ArithOp Op> |
bool | clang::interp::OffsetHelper (InterpState &S, CodePtr OpPC, const T &Offset, const Pointer &Ptr, bool IsPointerArith=false) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::AddOffset (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SubOffset (InterpState &S, CodePtr OpPC) |
|
template<ArithOp Op> |
static bool | clang::interp::IncDecPtrHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
|
static bool | clang::interp::IncPtr (InterpState &S, CodePtr OpPC) |
|
static bool | clang::interp::DecPtr (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::SubPtr (InterpState &S, CodePtr OpPC) |
| 1) Pops a Pointer from the stack.
|
|
bool | clang::interp::Destroy (InterpState &S, CodePtr OpPC, uint32_t I) |
|
bool | clang::interp::InitScope (InterpState &S, CodePtr OpPC, uint32_t I) |
|
template<PrimType TIn, PrimType TOut> |
bool | clang::interp::Cast (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::CastFP (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem, llvm::RoundingMode RM) |
| 1) Pops a Floating from the stack.
|
|
bool | clang::interp::CastFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
| Like Cast(), but we cast to an arbitrary-bitwidth integral, so we need to know what bitwidth the result should be.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastIntegralFloating (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem, uint32_t FPOI) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastFloatingIntegral (InterpState &S, CodePtr OpPC, uint32_t FPOI) |
|
static bool | clang::interp::CastFloatingIntegralAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI) |
|
static bool | clang::interp::CastFloatingIntegralAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI) |
|
bool | clang::interp::CheckPointerToIntegralCast (InterpState &S, CodePtr OpPC, const Pointer &Ptr, unsigned BitWidth) |
|
bool | clang::interp::CastPointerIntegralAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
|
bool | clang::interp::CastPointerIntegralAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastPointerIntegral (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
static bool | clang::interp::CastIntegralFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS) |
|
static bool | clang::interp::CastFloatingFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS) |
|
static bool | clang::interp::CastFixedPointFloating (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
static bool | clang::interp::CastFixedPointIntegral (InterpState &S, CodePtr OpPC) |
|
static bool | clang::interp::PtrPtrCast (InterpState &S, CodePtr OpPC, bool SrcIsVoidPtr) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Zero (InterpState &S, CodePtr OpPC) |
|
static bool | clang::interp::ZeroIntAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
|
static bool | clang::interp::ZeroIntAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Null (InterpState &S, CodePtr OpPC, uint64_t Value, const Descriptor *Desc) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::IsNonNull (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::This (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::RVOPtr (InterpState &S, CodePtr OpPC) |
|
template<class LT , class RT , ShiftDir Dir> |
bool | clang::interp::DoShift (InterpState &S, CodePtr OpPC, LT &LHS, RT &RHS) |
|
template<PrimType NameL, PrimType NameR> |
bool | clang::interp::Shr (InterpState &S, CodePtr OpPC) |
|
template<PrimType NameL, PrimType NameR> |
bool | clang::interp::Shl (InterpState &S, CodePtr OpPC) |
|
static bool | clang::interp::ShiftFixedPoint (InterpState &S, CodePtr OpPC, bool Left) |
|
bool | clang::interp::NoRet (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::NarrowPtr (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::ExpandPtr (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::ArrayElemPtr (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::ArrayElemPtrPop (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::ArrayElem (InterpState &S, CodePtr OpPC, uint32_t Index) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::ArrayElemPop (InterpState &S, CodePtr OpPC, uint32_t Index) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CopyArray (InterpState &S, CodePtr OpPC, uint32_t SrcIndex, uint32_t DestIndex, uint32_t Size) |
|
bool | clang::interp::ArrayDecay (InterpState &S, CodePtr OpPC) |
| Just takes a pointer and checks if it's an incomplete array type.
|
|
bool | clang::interp::GetFnPtr (InterpState &S, CodePtr OpPC, const Function *Func) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::GetIntPtr (InterpState &S, CodePtr OpPC, const Descriptor *Desc) |
|
bool | clang::interp::GetMemberPtr (InterpState &S, CodePtr OpPC, const ValueDecl *D) |
|
bool | clang::interp::GetMemberPtrBase (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::GetMemberPtrDecl (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Unsupported (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Error (InterpState &S, CodePtr OpPC) |
| Do nothing and just abort execution.
|
|
bool | clang::interp::SideEffect (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::InvalidCast (InterpState &S, CodePtr OpPC, CastKind Kind, bool Fatal) |
| Same here, but only for casts.
|
|
bool | clang::interp::InvalidDeclRef (InterpState &S, CodePtr OpPC, const DeclRefExpr *DR, bool InitializerFailed) |
|
bool | clang::interp::SizelessVectorElementSize (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Assume (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::OffsetOf (InterpState &S, CodePtr OpPC, const OffsetOfExpr *E) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CheckNonNullArg (InterpState &S, CodePtr OpPC) |
|
void | clang::interp::diagnoseEnumValue (InterpState &S, CodePtr OpPC, const EnumDecl *ED, const APSInt &Value) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CheckEnumValue (InterpState &S, CodePtr OpPC, const EnumDecl *ED) |
|
template<PrimType TIn, PrimType TOut> |
bool | clang::interp::DecayPtr (InterpState &S, CodePtr OpPC) |
| OldPtr -> Integer -> NewPtr.
|
|
bool | clang::interp::CheckDecl (InterpState &S, CodePtr OpPC, const VarDecl *VD) |
|
bool | clang::interp::Alloc (InterpState &S, CodePtr OpPC, const Descriptor *Desc) |
|
template<PrimType Name, class SizeT = typename PrimConv<Name>::T> |
bool | clang::interp::AllocN (InterpState &S, CodePtr OpPC, PrimType T, const Expr *Source, bool IsNoThrow) |
|
template<PrimType Name, class SizeT = typename PrimConv<Name>::T> |
bool | clang::interp::AllocCN (InterpState &S, CodePtr OpPC, const Descriptor *ElementDesc, bool IsNoThrow) |
|
bool | clang::interp::Free (InterpState &S, CodePtr OpPC, bool DeleteIsArrayForm, bool IsGlobalDelete) |
|
static bool | clang::interp::IsConstantContext (InterpState &S, CodePtr OpPC) |
|
static bool | clang::interp::CheckAllocations (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::CheckNewTypeMismatch (InterpState &S, CodePtr OpPC, const Expr *E, std::optional< uint64_t > ArraySize=std::nullopt) |
| Check if the initializer and storage types of a placement-new expression match.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CheckNewTypeMismatchArray (InterpState &S, CodePtr OpPC, const Expr *E) |
|
bool | clang::interp::InvalidNewDeleteExpr (InterpState &S, CodePtr OpPC, const Expr *E) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::BitCastPrim (InterpState &S, CodePtr OpPC, bool TargetIsUCharOrByte, uint32_t ResultBitWidth, const llvm::fltSemantics *Sem) |
|
bool | clang::interp::BitCast (InterpState &S, CodePtr OpPC) |
|
template<typename T > |
T | clang::interp::ReadArg (InterpState &S, CodePtr &OpPC) |
|
template<> |
Floating | clang::interp::ReadArg< Floating > (InterpState &S, CodePtr &OpPC) |
|
template<> |
IntegralAP< false > | clang::interp::ReadArg< IntegralAP< false > > (InterpState &S, CodePtr &OpPC) |
|
template<> |
IntegralAP< true > | clang::interp::ReadArg< IntegralAP< true > > (InterpState &S, CodePtr &OpPC) |
|