A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/namespaceclang_1_1interp.html below:

clang: clang::interp Namespace Reference

class   ArrayIndexScope   struct   BitcastBuffer   Track what bits have been initialized to known values and which ones have indeterminate value. More...
  struct   BitRange   A bit range. Both Start and End are inclusive. More...
  struct   Bits   A quantity in bits. More...
  class   Block   A memory block, either on the stack or in the heap. More...
  struct   BlockPointer   class   BlockScope   Scope for storage declared in a compound statement. More...
  class   Boolean   Wrapper around boolean types. More...
  class   ByteCodeEmitter   An emitter which links the program to bytecode for later use. More...
  struct   Bytes   A quantity in bytes. More...
  class   CodePtr   Pointer into the code segment. More...
  class   Compiler   Compilation context for expressions. More...
  class   Context   Holds all information required to evaluate constexpr code in a module. More...
  class   DeadBlock   Descriptor for a dead block. More...
  class   DeclScope   Scope used to handle temporaries in toplevel variable declarations. More...
  struct   Descriptor   Describes a memory block created by an allocation site. More...
  class   DestructorScope   class   DynamicAllocator   Manages dynamic memory allocations done during bytecode interpretation. More...
  class   EvalEmitter   An emitter which evaluates opcodes as they are emitted. More...
  class   EvaluationResult   Defines the result of an evaluation. More...
  class   FixedPoint   Wrapper around fixed point types. More...
  class   Floating   class   Frame   Base class for stack frames, shared between VM and walker. More...
  class   Function   Bytecode function. More...
  class   FunctionPointer   struct   GlobalInlineDescriptor   Descriptor used for global variables. More...
  struct   InitLink   class   InitLinkScope   struct   InitMap   Bitfield tracking the initialisation status of elements of primitive arrays. More...
  class   InitStackScope   struct   InlineDescriptor   Inline descriptor embedded in structures and arrays. More...
  class   Integral   Wrapper around numeric types. More...
  class   IntegralAP   class   InterpFrame   Frame storing local variables. More...
  class   InterpStack   Stack frame storing temporaries and parameters. More...
  class   InterpState   Interpreter context. More...
  class   InterpStateCCOverride   struct   IntPointer   class   LabelScope   Scope managing label targets. More...
  class   LocalScope   Generic scope for local variables. More...
  class   LoopScope   Sets the context for break/continue statements. More...
  class   MemberPointer   class   OptionScope   Scope used to handle initialization methods. More...
  struct   ParamOffset   class   Pointer   A pointer to a memory block, live or dead. More...
  struct   PrimConv   Mapping from primitive types to their representation. More...
  struct   PrimConv< PT_Bool >   struct   PrimConv< PT_FixedPoint >   struct   PrimConv< PT_Float >   struct   PrimConv< PT_FnPtr >   struct   PrimConv< PT_IntAP >   struct   PrimConv< PT_IntAPS >   struct   PrimConv< PT_MemberPtr >   struct   PrimConv< PT_Ptr >   struct   PrimConv< PT_Sint16 >   struct   PrimConv< PT_Sint32 >   struct   PrimConv< PT_Sint64 >   struct   PrimConv< PT_Sint8 >   struct   PrimConv< PT_Uint16 >   struct   PrimConv< PT_Uint32 >   struct   PrimConv< PT_Uint64 >   struct   PrimConv< PT_Uint8 >   class   Program   The program contains and links the bytecode for all functions. More...
  class   Record   Structure/Class descriptor. More...
  struct   Repr   struct   Repr< 16, false >   struct   Repr< 16, true >   struct   Repr< 32, false >   struct   Repr< 32, true >   struct   Repr< 64, false >   struct   Repr< 64, true >   struct   Repr< 8, false >   struct   Repr< 8, true >   class   Scope   Describes a scope block. More...
  class   SourceInfo   Describes the statement/declaration an opcode was generated from. More...
  class   SourceLocScope   class   SourceMapper   Interface for classes which map locations to sources. More...
  class   State   Interface for the VM to interact with the AST walker's context. More...
  class   StmtExprScope   class   SwitchScope   struct   TypeidPointer   struct   VarCreationState   State encapsulating if a the variable creation has been successful, unsuccessful, or no variable has been created at all. More...
  class   VariableScope   Scope chain managing the variable lifetimes. More...
  using  DeclTy = llvm::PointerUnion< const Decl *, const Expr * >   using  InitMapPtr = std::optional< std::pair< bool, std::shared_ptr< InitMap > > >   using  BlockCtorFn = void(*)(Block *Storage, std::byte *FieldPtr, bool IsConst, bool IsMutable, bool IsActive, bool InUnion, const Descriptor *FieldDesc)   Invoked whenever a block is created.
  using  BlockDtorFn = void(*)(Block *Storage, std::byte *FieldPtr, const Descriptor *FieldDesc)   Invoked when a block is destroyed.
  using  BlockMoveFn = void(*)(Block *Storage, std::byte *SrcFieldPtr, std::byte *DstFieldPtr, const Descriptor *FieldDesc)   Invoked when a block with pointers referencing it goes out of scope.
  using  APInt = llvm::APInt   using  APSInt = llvm::APSInt   using  APFloat = llvm::APFloat   using  FunctionDeclTy = llvm::PointerUnion< const FunctionDecl *, const BlockExpr * >   using  FixedPointSemantics = llvm::FixedPointSemantics   using  CompareFn = llvm::function_ref< bool(ComparisonCategoryResult)>   using  SourceMap = std::vector< std::pair< unsigned, SourceInfo > >   enum class   Endian { Little , Big }   enum class   GlobalInitState { Initialized , NoInitializer , InitializerFailed }   enum class   ShiftDir { Left , Right }   enum class   ArithOp { Add , Sub }   enum class   PushVal : bool { No , Yes }   enum class   IncDecOp { Inc , Dec }   enum   Opcode : uint32_t   enum class   Storage { Block , Int , Fn , Typeid }   enum   PrimType : unsigned {
  PT_Sint8 = 0 , PT_Uint8 = 1 , PT_Sint16 = 2 , PT_Uint16 = 3 ,
  PT_Sint32 = 4 , PT_Uint32 = 5 , PT_Sint64 = 6 , PT_Uint64 = 7 ,
  PT_IntAP = 8 , PT_IntAPS = 9 , PT_Bool = 10 , PT_FixedPoint = 11 ,
  PT_Float = 12 , PT_Ptr = 13 , PT_FnPtr = 14 , PT_MemberPtr = 15
}   Enumeration of the primitive types of the VM. More...
  enum class   CastKind : uint8_t { Reinterpret , Atomic }   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, const Boolean &B)   static void  DiagnoseUninitializedSubobject (InterpState &S, SourceLocation Loc, const FieldDecl *SubObjDecl)   static bool  CheckFieldsInitialized (InterpState &S, SourceLocation Loc, const Pointer &BasePtr, const Record *R)   static bool  CheckArrayInitialized (InterpState &S, SourceLocation Loc, const Pointer &BasePtr, const ConstantArrayType *CAT)   static void  collectBlocks (const Pointer &Ptr, llvm::SetVector< const Block * > &Blocks)   FixedPoint  getSwappedBytes (FixedPoint F)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, FixedPoint F)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, Floating F)   Floating  getSwappedBytes (Floating F)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, FunctionPointer FP)   template<unsigned Bits, bool Signed> llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, Integral< Bits, Signed > I)   template<bool Signed> llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, IntegralAP< Signed > I)   template<bool Signed> IntegralAP< SignedgetSwappedBytes (IntegralAP< Signed > F)   static void  popArg (InterpState &S, const Expr *Arg)   void  cleanupAfterFunctionCall (InterpState &S, CodePtr OpPC, const Function *Func)   bool  CheckExtern (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if the variable has externally defined storage.
  bool  CheckArray (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if the array is offsetable.
  bool  CheckLive (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK)   Checks if a pointer is live and accessible.
  bool  CheckConstant (InterpState &S, CodePtr OpPC, const Descriptor *Desc)   Checks if the Descriptor is of a constexpr or const global variable.
  static bool  CheckConstant (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   bool  CheckNull (InterpState &S, CodePtr OpPC, const Pointer &Ptr, CheckSubobjectKind CSK)   Checks if a pointer is null.
  bool  CheckRange (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK)   Checks if a pointer is in range.
  bool  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  CheckSubobject (InterpState &S, CodePtr OpPC, const Pointer &Ptr, CheckSubobjectKind CSK)   Checks if Ptr is a one-past-the-end pointer.
  bool  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  CheckConst (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if a pointer points to const storage.
  bool  CheckMutable (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if a pointer points to a mutable field.
  static bool  CheckVolatile (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK)   bool  CheckInitialized (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK)   bool  CheckGlobalInitialized (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Check if a global variable is initialized.
  static bool  CheckWeak (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   bool  CheckLoad (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK=AK_Read)   Checks if a value can be loaded from a block.
  bool  CheckFinalLoad (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   This is not used by any of the opcodes directly.
  bool  CheckStore (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if a value can be stored in a block.
  bool  CheckInvoke (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if a method can be invoked on an object.
  bool  CheckInit (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   Checks if a value can be initialized.
  bool  CheckCallable (InterpState &S, CodePtr OpPC, const Function *F)   Checks if a method can be called.
  bool  CheckCallDepth (InterpState &S, CodePtr OpPC)   Checks if calling the currently active function would exceed the allowed call depth.
  bool  CheckThis (InterpState &S, CodePtr OpPC, const Pointer &This)   Checks the 'this' pointer.
  bool  CheckPure (InterpState &S, CodePtr OpPC, const CXXMethodDecl *MD)   Checks if a method is pure virtual.
  bool  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  CheckDynamicMemoryAllocation (InterpState &S, CodePtr OpPC)   Checks if dynamic memory allocation is available in the current language mode.
  bool  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  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  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  CheckDummy (InterpState &S, CodePtr OpPC, const Pointer &Ptr, AccessKinds AK)   Checks if a pointer is a dummy pointer.
  bool  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.
  static bool  runRecordDestructor (InterpState &S, CodePtr OpPC, const Pointer &BasePtr, const Descriptor *Desc)   static bool  RunDestructors (InterpState &S, CodePtr OpPC, const Block *B)   static bool  hasVirtualDestructor (QualType T)   bool  Free (InterpState &S, CodePtr OpPC, bool DeleteIsArrayForm, bool IsGlobalDelete)   void  diagnoseEnumValue (InterpState &S, CodePtr OpPC, const EnumDecl *ED, const APSInt &Value)   bool  CheckLiteralType (InterpState &S, CodePtr OpPC, const Type *T)   static bool  getField (InterpState &S, CodePtr OpPC, const Pointer &Ptr, uint32_t Off)   bool  GetPtrField (InterpState &S, CodePtr OpPC, uint32_t Off)   1) Peeks a Pointer 2) Pushes Pointer.atField(Off) on the stack
  bool  GetPtrFieldPop (InterpState &S, CodePtr OpPC, uint32_t Off)   static bool  checkConstructor (InterpState &S, CodePtr OpPC, const Function *Func, const Pointer &ThisPtr)   bool  CallVar (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize)   bool  Call (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize)   bool  CallVirt (InterpState &S, CodePtr OpPC, const Function *Func, uint32_t VarArgSize)   bool  CallBI (InterpState &S, CodePtr OpPC, const Function *Func, const CallExpr *CE, uint32_t BuiltinID)   bool  CallPtr (InterpState &S, CodePtr OpPC, uint32_t ArgSize, const CallExpr *CE)   bool  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.
  bool  InvalidNewDeleteExpr (InterpState &S, CodePtr OpPC, const Expr *E)   bool  handleFixedPointOverflow (InterpState &S, CodePtr OpPC, const FixedPoint &FP)   bool  InvalidShuffleVectorIndex (InterpState &S, CodePtr OpPC, uint32_t Index)   bool  CheckPointerToIntegralCast (InterpState &S, CodePtr OpPC, const Pointer &Ptr, unsigned BitWidth)   bool  CastPointerIntegralAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth)   bool  CastPointerIntegralAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth)   bool  CheckBitCast (InterpState &S, CodePtr OpPC, bool HasIndeterminateBits, bool TargetIsUCharOrByte)   bool  GetTypeid (InterpState &S, CodePtr OpPC, const Type *TypePtr, const Type *TypeInfoType)   Typeid support.
  bool  GetTypeidPtr (InterpState &S, CodePtr OpPC, const Type *TypeInfoType)   bool  DiagTypeid (InterpState &S, CodePtr OpPC)   bool  Interpret (InterpState &S)   Interpreter entry point.
  bool  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  DoMemcpy (InterpState &S, CodePtr OpPC, const Pointer &Src, Pointer &Dest)   Copy the contents of Src into Dest.
  template<typename T > static bool  handleOverflow (InterpState &S, CodePtr OpPC, const T &SrcValue)   template<ShiftDir Dir, typename LT , typename RT > bool  CheckShift (InterpState &S, CodePtr OpPC, const LT &LHS, const RT &RHS, unsigned Bits)   Checks if the shift operation is legal.
  template<typename T > bool  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  CheckArraySize (InterpState &S, CodePtr OpPC, SizeT *NumElements, unsigned ElemSize, bool IsNoThrow)   bool  InterpretBuiltin (InterpState &S, CodePtr OpPC, const Function *F, const CallExpr *Call, uint32_t BuiltinID)   Interpret a builtin function.
  bool  InterpretOffsetOf (InterpState &S, CodePtr OpPC, const OffsetOfExpr *E, llvm::ArrayRef< int64_t > ArrayIndices, int64_t &Result)   Interpret an offsetof operation.
  bool  Invalid (InterpState &S, CodePtr OpPC)   Just emit a diagnostic.
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Ret (InterpState &S, CodePtr &PC)   bool  RetVoid (InterpState &S, CodePtr &PC)   template<typename T , bool(*)(T, T, unsigned, T *) OpFW, template< typename U > class OpAP> bool  AddSubMulHelper (InterpState &S, CodePtr OpPC, unsigned Bits, const T &LHS, const T &RHS)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Add (InterpState &S, CodePtr OpPC)   static llvm::RoundingMode  getRoundingMode (FPOptions FPO)   bool  Addf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Sub (InterpState &S, CodePtr OpPC)   bool  Subf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Mul (InterpState &S, CodePtr OpPC)   bool  Mulf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Mulc (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Divc (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  BitAnd (InterpState &S, CodePtr OpPC)   1) Pops the RHS from the stack.
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  BitOr (InterpState &S, CodePtr OpPC)   1) Pops the RHS from the stack.
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  BitXor (InterpState &S, CodePtr OpPC)   1) Pops the RHS from the stack.
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Rem (InterpState &S, CodePtr OpPC)   1) Pops the RHS from the stack.
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Div (InterpState &S, CodePtr OpPC)   1) Pops the RHS from the stack.
  bool  Divf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   bool  Inv (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Neg (InterpState &S, CodePtr OpPC)   template<typename T , IncDecOp Op, PushVal DoPush> bool  IncDecHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  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  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  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  IncDecFloatHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr, uint32_t FPOI)   bool  Incf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   bool  IncfPop (InterpState &S, CodePtr OpPC, uint32_t FPOI)   bool  Decf (InterpState &S, CodePtr OpPC, uint32_t FPOI)   bool  DecfPop (InterpState &S, CodePtr OpPC, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Comp (InterpState &S, CodePtr OpPC)   1) Pops the value from the stack.
  template<typename T > bool  CmpHelper (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<typename T > bool  CmpHelperEQ (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<> bool  CmpHelper< FunctionPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn)   Function pointers cannot be compared in an ordered way.
  template<> bool  CmpHelperEQ< FunctionPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<> bool  CmpHelper< Pointer > (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<> bool  CmpHelperEQ< Pointer > (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<> bool  CmpHelperEQ< MemberPointer > (InterpState &S, CodePtr OpPC, CompareFn Fn)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  EQ (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CMP3 (InterpState &S, CodePtr OpPC, const ComparisonCategoryInfo *CmpInfo)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  NE (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  LT (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  LE (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  GT (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  GE (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  InRange (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Dup (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Pop (InterpState &S, CodePtr OpPC)   template<PrimType TopName, PrimType BottomName> bool  Flip (InterpState &S, CodePtr OpPC)   [Value1, Value2] -> [Value2, Value1]
  template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Const (InterpState &S, CodePtr OpPC, const T &Arg)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  GetLocal (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  GetParam (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  SetParam (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  SetField (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  GetThisField (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  SetThisField (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  GetGlobal (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  SetGlobal (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  InitGlobal (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  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  InitThisField (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  InitThisBitField (InterpState &S, CodePtr OpPC, const Record::Field *F, uint32_t FieldOffset)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  InitBitField (InterpState &S, CodePtr OpPC, const Record::Field *F)   bool  GetPtrLocal (InterpState &S, CodePtr OpPC, uint32_t I)   bool  GetPtrParam (InterpState &S, CodePtr OpPC, uint32_t I)   bool  GetPtrGlobal (InterpState &S, CodePtr OpPC, uint32_t I)   bool  GetPtrThisField (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetPtrActiveField (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetPtrActiveThisField (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetPtrDerivedPop (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetPtrBase (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetPtrBasePop (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  GetMemberPtrBasePop (InterpState &S, CodePtr OpPC, int32_t Off)   bool  GetPtrThisBase (InterpState &S, CodePtr OpPC, uint32_t Off)   bool  FinishInitPop (InterpState &S, CodePtr OpPC)   bool  FinishInit (InterpState &S, CodePtr OpPC)   bool  Dump (InterpState &S, CodePtr OpPC)   bool  VirtBaseHelper (InterpState &S, CodePtr OpPC, const RecordDecl *Decl, const Pointer &Ptr)   bool  GetPtrVirtBasePop (InterpState &S, CodePtr OpPC, const RecordDecl *D)   bool  GetPtrThisVirtBase (InterpState &S, CodePtr OpPC, const RecordDecl *D)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Load (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  LoadPop (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Store (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  StorePop (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  StoreBitField (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  StoreBitFieldPop (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Init (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  InitPop (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  InitElemPop (InterpState &S, CodePtr OpPC, uint32_t Idx)   The same as InitElem, but pops the pointer as well.
  bool  Memcpy (InterpState &S, CodePtr OpPC)   bool  ToMemberPtr (InterpState &S, CodePtr OpPC)   bool  CastMemberPtrPtr (InterpState &S, CodePtr OpPC)   template<class T , ArithOp Op> bool  OffsetHelper (InterpState &S, CodePtr OpPC, const T &Offset, const Pointer &Ptr, bool IsPointerArith=false)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  AddOffset (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  SubOffset (InterpState &S, CodePtr OpPC)   template<ArithOp Op> static bool  IncDecPtrHelper (InterpState &S, CodePtr OpPC, const Pointer &Ptr)   static bool  IncPtr (InterpState &S, CodePtr OpPC)   static bool  DecPtr (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  SubPtr (InterpState &S, CodePtr OpPC)   1) Pops a Pointer from the stack.
  bool  Destroy (InterpState &S, CodePtr OpPC, uint32_t I)   bool  InitScope (InterpState &S, CodePtr OpPC, uint32_t I)   template<PrimType TIn, PrimType TOut> bool  Cast (InterpState &S, CodePtr OpPC)   bool  CastFP (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem, llvm::RoundingMode RM)   1) Pops a Floating from the stack.
  bool  CastFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  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  CastAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CastIntegralFloating (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CastFloatingIntegral (InterpState &S, CodePtr OpPC, uint32_t FPOI)   static bool  CastFloatingIntegralAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI)   static bool  CastFloatingIntegralAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth, uint32_t FPOI)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CastPointerIntegral (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> static bool  CastIntegralFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS)   static bool  CastFloatingFixedPoint (InterpState &S, CodePtr OpPC, uint32_t FPS)   static bool  CastFixedPointFloating (InterpState &S, CodePtr OpPC, const llvm::fltSemantics *Sem)   template<PrimType Name, class T = typename PrimConv<Name>::T> static bool  CastFixedPointIntegral (InterpState &S, CodePtr OpPC)   static bool  PtrPtrCast (InterpState &S, CodePtr OpPC, bool SrcIsVoidPtr)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Zero (InterpState &S, CodePtr OpPC)   static bool  ZeroIntAP (InterpState &S, CodePtr OpPC, uint32_t BitWidth)   static bool  ZeroIntAPS (InterpState &S, CodePtr OpPC, uint32_t BitWidth)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  Null (InterpState &S, CodePtr OpPC, uint64_t Value, const Descriptor *Desc)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  IsNonNull (InterpState &S, CodePtr OpPC)   bool  This (InterpState &S, CodePtr OpPC)   bool  RVOPtr (InterpState &S, CodePtr OpPC)   template<class LT , class RT , ShiftDir Dir> bool  DoShift (InterpState &S, CodePtr OpPC, LT &LHS, RT &RHS)   template<PrimType NameL, PrimType NameR> bool  Shr (InterpState &S, CodePtr OpPC)   template<PrimType NameL, PrimType NameR> bool  Shl (InterpState &S, CodePtr OpPC)   static bool  ShiftFixedPoint (InterpState &S, CodePtr OpPC, bool Left)   bool  NoRet (InterpState &S, CodePtr OpPC)   bool  NarrowPtr (InterpState &S, CodePtr OpPC)   bool  ExpandPtr (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  ArrayElemPtr (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  ArrayElemPtrPop (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  ArrayElem (InterpState &S, CodePtr OpPC, uint32_t Index)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  ArrayElemPop (InterpState &S, CodePtr OpPC, uint32_t Index)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CopyArray (InterpState &S, CodePtr OpPC, uint32_t SrcIndex, uint32_t DestIndex, uint32_t Size)   bool  ArrayDecay (InterpState &S, CodePtr OpPC)   Just takes a pointer and checks if it's an incomplete array type.
  bool  GetFnPtr (InterpState &S, CodePtr OpPC, const Function *Func)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  GetIntPtr (InterpState &S, CodePtr OpPC, const Descriptor *Desc)   bool  GetMemberPtr (InterpState &S, CodePtr OpPC, const ValueDecl *D)   bool  GetMemberPtrBase (InterpState &S, CodePtr OpPC)   bool  GetMemberPtrDecl (InterpState &S, CodePtr OpPC)   bool  Unsupported (InterpState &S, CodePtr OpPC)   bool  Error (InterpState &S, CodePtr OpPC)   Do nothing and just abort execution.
  bool  SideEffect (InterpState &S, CodePtr OpPC)   bool  InvalidCast (InterpState &S, CodePtr OpPC, CastKind Kind, bool Fatal)   Same here, but only for casts.
  bool  InvalidDeclRef (InterpState &S, CodePtr OpPC, const DeclRefExpr *DR, bool InitializerFailed)   bool  SizelessVectorElementSize (InterpState &S, CodePtr OpPC)   bool  Assume (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  OffsetOf (InterpState &S, CodePtr OpPC, const OffsetOfExpr *E)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CheckNonNullArg (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CheckEnumValue (InterpState &S, CodePtr OpPC, const EnumDecl *ED)   template<PrimType TIn, PrimType TOut> bool  DecayPtr (InterpState &S, CodePtr OpPC)   OldPtr -> Integer -> NewPtr.
  bool  CheckDecl (InterpState &S, CodePtr OpPC, const VarDecl *VD)   bool  Alloc (InterpState &S, CodePtr OpPC, const Descriptor *Desc)   template<PrimType Name, class SizeT = typename PrimConv<Name>::T> bool  AllocN (InterpState &S, CodePtr OpPC, PrimType T, const Expr *Source, bool IsNoThrow)   template<PrimType Name, class SizeT = typename PrimConv<Name>::T> bool  AllocCN (InterpState &S, CodePtr OpPC, const Descriptor *ElementDesc, bool IsNoThrow)   static bool  IsConstantContext (InterpState &S, CodePtr OpPC)   static bool  CheckAllocations (InterpState &S, CodePtr OpPC)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  CheckNewTypeMismatchArray (InterpState &S, CodePtr OpPC, const Expr *E)   template<PrimType Name, class T = typename PrimConv<Name>::T> bool  BitCastPrim (InterpState &S, CodePtr OpPC, bool TargetIsUCharOrByte, uint32_t ResultBitWidth, const llvm::fltSemantics *Sem)   bool  BitCast (InterpState &S, CodePtr OpPC)   template<typename T > T  ReadArg (InterpState &S, CodePtr &OpPC)   template<> Floating  ReadArg< Floating > (InterpState &S, CodePtr &OpPC)   template<> IntegralAP< falseReadArg< IntegralAP< false > > (InterpState &S, CodePtr &OpPC)   template<> IntegralAP< trueReadArg< IntegralAP< true > > (InterpState &S, CodePtr &OpPC)   template<> FixedPoint  ReadArg< FixedPoint > (InterpState &S, CodePtr &OpPC)   static unsigned  callArgSize (const InterpState &S, const CallExpr *C)   template<typename T > static T  getParam (const InterpFrame *Frame, unsigned Index)   static APSInt  getAPSIntParam (const InterpFrame *Frame, unsigned Index)   static PrimType  getIntPrimType (const InterpState &S)   static PrimType  getLongPrimType (const InterpState &S)   static APSInt  peekToAPSInt (InterpStack &Stk, PrimType T, size_t Offset=0)   Peek an integer value from the stack into an APSInt.
  static void  pushInteger (InterpState &S, const APSInt &Val, QualType QT)   Pushes Val on the stack as the type given by QT.
  template<typename T > static void  pushInteger (InterpState &S, T Val, QualType QT)   static void  assignInteger (Pointer &Dest, PrimType ValueT, const APSInt &Value)   static bool  retPrimValue (InterpState &S, CodePtr OpPC, std::optional< PrimType > &T)   static void  diagnoseNonConstexprBuiltin (InterpState &S, CodePtr OpPC, unsigned ID)   static bool  interp__builtin_is_constant_evaluated (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const CallExpr *Call)   static bool  interp__builtin_strcmp (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_strlen (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_nan (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, bool Signaling)   static bool  interp__builtin_inf (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F)   static bool  interp__builtin_copysign (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F)   static bool  interp__builtin_fmin (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, bool IsNumBuiltin)   static bool  interp__builtin_fmax (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, bool IsNumBuiltin)   static bool  interp__builtin_isnan (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   Defined as __builtin_isnan(...), to accommodate the fact that it can take a float, double, long double, etc.
  static bool  interp__builtin_issignaling (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_isinf (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, bool CheckSign, const CallExpr *Call)   static bool  interp__builtin_isfinite (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_isnormal (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_issubnormal (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_iszero (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_signbit (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp_floating_comparison (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *F, const CallExpr *Call)   static bool  interp__builtin_isfpclass (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   First parameter to __builtin_isfpclass is the floating value, the second one is an integral value.
  static bool  interp__builtin_fpclassify (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   Five int values followed by one floating value.
  static bool  interp__builtin_fabs (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func)   static bool  interp__builtin_abs (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_popcount (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_parity (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_clrsb (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_bitreverse (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_classify_type (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_expect (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_rotate (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call, bool Right)   rotateleft(value, amount)
  static bool  interp__builtin_ffs (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_addressof (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_move (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_eh_return_data_regno (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  noopPointer (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   Just takes the first Argument to the call and puts it on the stack.
  static bool  interp__builtin_overflowop (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_carryop (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   Three integral values followed by a pointer (lhs, rhs, carry, carryOut).
  static bool  interp__builtin_clz (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ctz (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_bswap (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_atomic_lock_free (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   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)
  static bool  interp__builtin_complex (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   __builtin_complex(Float A, float B);
  static bool  interp__builtin_is_aligned_up_down (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   __builtin_is_aligned() __builtin_align_up() __builtin_align_down() The first parameter is either an integer or a pointer.
  static bool  interp__builtin_assume_aligned (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   __builtin_assume_aligned(Ptr, Alignment[, ExtraOffset])
  static bool  interp__builtin_ia32_bextr (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_bzhi (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_lzcnt (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_tzcnt (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_pdep (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_pext (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ia32_addcarry_subborrow (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_os_log_format_buffer_size (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_ptrauth_string_discriminator (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_constant_p (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_operator_new (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_operator_delete (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_arithmetic_fence (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_vector_reduce (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  interp__builtin_elementwise_popcount (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   Can be called with an integer or vector as the first and only parameter.
  static bool  interp__builtin_memcpy (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  isOneByteCharacterType (QualType T)   Determine if T is a character type for which we guarantee that sizeof(T) == 1.
  static bool  interp__builtin_memcmp (InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call)   static bool  copyComposite (InterpState &S, CodePtr OpPC, const Pointer &Src, Pointer &Dest, bool Activate)   static bool  copyRecord (InterpState &S, CodePtr OpPC, const Pointer &Src, Pointer &Dest, bool Activate=false)   static void  swapBytes (std::byte *M, size_t N)   bool  DoBitCast (InterpState &S, CodePtr OpPC, const Pointer &Ptr, std::byte *Buff, Bits BitWidth, Bits FullBitWidth, bool &HasIndeterminateBits)   bool  DoBitCastPtr (InterpState &S, CodePtr OpPC, const Pointer &FromPtr, Pointer &ToPtr)   bool  DoBitCastPtr (InterpState &S, CodePtr OpPC, const Pointer &FromPtr, Pointer &ToPtr, size_t Size)   bool  readPointerToBuffer (const Context &Ctx, const Pointer &FromPtr, BitcastBuffer &Buffer, bool ReturnOnUninit)   bool  DoMemcpy (InterpState &S, CodePtr OpPC, const Pointer &SrcPtr, const Pointer &DestPtr, Bits Size)   llvm::BitVector  collectNonNullArgs (const FunctionDecl *F, const llvm::ArrayRef< const Expr * > &Args)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, MemberPointer FP)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, const Pointer &P)   template<typename T > ComparisonCategoryResult  Compare (const T &X, const T &Y)   Helper to compare two comparable types.
  size_t  primSize (PrimType Type)   Returns the size of a primitive type in bytes.
  constexpr bool  isPtrType (PrimType T)   llvm::raw_ostream &  operator<< (llvm::raw_ostream &OS, interp::CastKind CK)   constexpr bool  isIntegralType (PrimType T)   constexpr size_t  align (size_t Size)   Aligns a size to the pointer alignment.
  constexpr bool  aligned (uintptr_t Value)   static bool  aligned (const void *P)   ◆ APFloat ◆ APInt ◆ APSInt ◆ BlockCtorFn

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.

◆ BlockDtorFn

Invoked 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.

◆ BlockMoveFn

Invoked 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  Atomic 

Definition at line 57 of file PrimType.h.

◆ Endian ◆ GlobalInitState Enumerator Initialized  NoInitializer  InitializerFailed 

Definition at line 52 of file Descriptor.h.

◆ IncDecOp ◆ Opcode ◆ PrimType

Enumeration 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_MemberPtr 

Definition at line 34 of file PrimType.h.

◆ PushVal ◆ ShiftDir ◆ Storage Enumerator Block  Int  Fn  Typeid 

Definition at line 57 of file Pointer.h.

◆ Add()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Addf() ◆ AddOffset()

template<

PrimType

Name, 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<

PrimType

Name, class SizeT = typename PrimConv<Name>::T>

◆ AllocN()

template<

PrimType

Name, class SizeT = typename PrimConv<Name>::T>

◆ ArrayDecay() ◆ ArrayElem()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ ArrayElemPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ ArrayElemPtr()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ ArrayElemPtrPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ assignInteger() ◆ Assume() ◆ BitAnd()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

bool clang::interp::BitCastPrim ( InterpStateS, CodePtr  OpPC, bool  TargetIsUCharOrByte, uint32_t  ResultBitWidth, const llvm::fltSemantics *  Sem  ) inline ◆ BitOr()

template<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CastAPS()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CastFixedPoint() ◆ CastFixedPointFloating() static bool clang::interp::CastFixedPointFloating ( InterpStateS, CodePtr  OpPC, const llvm::fltSemantics *  Sem  ) inlinestatic

Definition at line 2297 of file Interp.h.

◆ CastFixedPointIntegral()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CastFloatingFixedPoint() ◆ CastFloatingIntegral()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CastFloatingIntegralAP() static bool clang::interp::CastFloatingIntegralAP ( InterpStateS, CodePtr  OpPC, uint32_t  BitWidth, uint32_t  FPOI  ) inlinestatic ◆ CastFloatingIntegralAPS() static bool clang::interp::CastFloatingIntegralAPS ( InterpStateS, CodePtr  OpPC, uint32_t  BitWidth, uint32_t  FPOI  ) inlinestatic ◆ CastFP() bool clang::interp::CastFP ( InterpStateS, CodePtr  OpPC, const llvm::fltSemantics *  Sem, llvm::RoundingMode  RM  ) inline ◆ CastIntegralFixedPoint()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CastIntegralFloating()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

bool clang::interp::CastIntegralFloating ( InterpStateS, CodePtr  OpPC, const llvm::fltSemantics *  Sem, uint32_t  FPOI  ) ◆ CastMemberPtrPtr() ◆ CastPointerIntegral()

template<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CheckNonNullArg()

template<

PrimType

Name, 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<

ShiftDir

Dir, 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<

PrimType

Name, 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 PointerPtr, llvm::SetVector< const Block * > &  Blocks  ) static

Definition 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ CopyArray()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

bool clang::interp::CopyArray ( InterpStateS, 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<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Divc()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ EQ()

template<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ GetFieldPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ GetFnPtr() ◆ GetGlobal()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ GetGlobalUnchecked()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ getIntPrimType() ◆ GetIntPtr()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ GetLocal()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ getLongPrimType() ◆ GetMemberPtr() ◆ GetMemberPtrBase() ◆ GetMemberPtrBasePop() ◆ GetMemberPtrDecl() ◆ getParam() ◆ GetParam()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ GetTypeid() ◆ GetTypeidPtr() ◆ GT()

template<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitBitField()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitElem()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitElemPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitField()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitGlobalTemp()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitGlobalTempComp() ◆ InitPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InitScope() ◆ InitThisBitField()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

bool clang::interp::InitThisBitField ( InterpStateS, CodePtr  OpPC, const Record::Field *  F, uint32_t  FieldOffset  ) ◆ InitThisField()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ InRange()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ isOneByteCharacterType() static bool clang::interp::isOneByteCharacterType ( QualType  T ) static ◆ isPtrType() ◆ LE()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Load()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ LoadPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ LT()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Memcpy() ◆ Mul()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Mulc()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Mulf() ◆ NarrowPtr() ◆ NE()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Neg()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ noopPointer() ◆ NoRet() ◆ Null()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ operator<<() [1/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream &  OS, const BooleanB  ) inline ◆ operator<<() [2/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream &  OS, const PointerP  ) 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, SignedI  ) ◆ operator<<() [7/9] llvm::raw_ostream & clang::interp::operator<< ( llvm::raw_ostream &  OS, IntegralAP< SignedI  ) 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<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ SetGlobal() ◆ SetLocal()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ SetThisField()

template<

PrimType

Name, 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<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ StoreBitField()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ StoreBitFieldPop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ StorePop()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Sub()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ Subf() ◆ SubOffset()

template<

PrimType

Name, class

T

= typename PrimConv<Name>::T>

◆ SubPtr()

template<

PrimType

Name, 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<

PrimType

Name, 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