|
template<typename T > |
bool | clang::interp::ReturnValue (const T &V, APValue &R) |
| Convert a value to an APValue.
|
|
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::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::CheckConst (InterpState &S, CodePtr OpPC, const Pointer &Ptr) |
| Checks if a pointer points to const storage.
|
|
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) |
| Checks if a value can be loaded from a block.
|
|
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::CheckCtorCall (InterpState &S, CodePtr OpPC, const Pointer &This) |
| Checks that all fields are initialized after a constructor call.
|
|
template<typename RT > |
bool | clang::interp::CheckShift (InterpState &S, CodePtr OpPC, 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.
|
|
bool | clang::interp::CheckFloatResult (InterpState &S, CodePtr OpPC, APFloat::opStatus Status) |
| Checks if the result is a floating-point operation is valid in the current context.
|
|
bool | clang::interp::Interpret (InterpState &S, APValue &Result) |
| Interpreter entry point.
|
|
bool | clang::interp::InterpretBuiltin (InterpState &S, CodePtr &PC, unsigned BuiltinID) |
| Interpret a builtin function.
|
|
template<PrimType Name, bool Builtin = false, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Ret (InterpState &S, CodePtr &PC, APValue &Result) |
|
template<bool Builtin = false> |
bool | clang::interp::RetVoid (InterpState &S, CodePtr &PC, APValue &Result) |
|
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) |
|
bool | clang::interp::Addf (InterpState &S, CodePtr OpPC, llvm::RoundingMode RM) |
|
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, llvm::RoundingMode RM) |
|
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, llvm::RoundingMode RM) |
|
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, llvm::RoundingMode RM) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
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, llvm::RoundingMode RM) |
|
bool | clang::interp::Incf (InterpState &S, CodePtr OpPC, llvm::RoundingMode RM) |
|
bool | clang::interp::IncfPop (InterpState &S, CodePtr OpPC, llvm::RoundingMode RM) |
|
bool | clang::interp::Decf (InterpState &S, CodePtr OpPC, llvm::RoundingMode RM) |
|
bool | clang::interp::DecfPop (InterpState &S, CodePtr OpPC, llvm::RoundingMode RM) |
|
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<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::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 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::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) 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) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitThisFieldActive (InterpState &S, CodePtr OpPC, uint32_t I) |
|
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) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::InitFieldActive (InterpState &S, CodePtr OpPC, uint32_t I) |
|
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) Pops a Pointer from the stack 2) Pushes Pointer.atField(Off) on the stack
|
|
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::GetPtrBase (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrBasePop (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::GetPtrThisBase (InterpState &S, CodePtr OpPC, uint32_t Off) |
|
bool | clang::interp::VirtBaseHelper (InterpState &S, CodePtr OpPC, const RecordDecl *Decl, const Pointer &Ptr) |
|
bool | clang::interp::GetPtrVirtBase (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::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.
|
|
template<class T , ArithOp Op> |
bool | clang::interp::OffsetHelper (InterpState &S, CodePtr OpPC, const T &Offset, const Pointer &Ptr) |
|
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) |
|
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) |
|
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.
|
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastIntegralFloating (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem, llvm::RoundingMode RM) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::CastFloatingIntegral (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Zero (InterpState &S, CodePtr OpPC) |
|
template<PrimType Name, class T = typename PrimConv<Name>::T> |
bool | clang::interp::Null (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::This (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::RVOPtr (InterpState &S, CodePtr OpPC) |
|
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) |
|
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) |
|
bool | clang::interp::CheckGlobalCtor (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::Call (InterpState &S, CodePtr OpPC, const Function *Func) |
|
bool | clang::interp::CallBI (InterpState &S, CodePtr &PC, const Function *Func) |
|
bool | clang::interp::CallPtr (InterpState &S, CodePtr OpPC) |
|
bool | clang::interp::GetFnPtr (InterpState &S, CodePtr &PC, const Function *Func) |
|
template<typename T > |
T | clang::interp::ReadArg (InterpState &S, CodePtr &OpPC) |
|