clang: lib/AST/ByteCode/Compiler.cpp File Reference (original) (raw)

#include "[Compiler.h](lib%5F2AST%5F2ByteCode%5F2Compiler%5F8h%5Fsource.html)"
#include "[ByteCodeEmitter.h](ByteCodeEmitter%5F8h%5Fsource.html)"
#include "[Context.h](lib%5F2AST%5F2ByteCode%5F2Context%5F8h%5Fsource.html)"
#include "[FixedPoint.h](FixedPoint%5F8h%5Fsource.html)"
#include "[Floating.h](Floating%5F8h%5Fsource.html)"
#include "[Function.h](Function%5F8h%5Fsource.html)"
#include "[InterpShared.h](InterpShared%5F8h%5Fsource.html)"
#include "[PrimType.h](PrimType%5F8h%5Fsource.html)"
#include "[Program.h](Program%5F8h%5Fsource.html)"
#include "[clang/AST/Attr.h](AST%5F2Attr%5F8h%5Fsource.html)"
#include "llvm/Support/SaveAndRestore.h"

Go to the source code of this file.

Classes
class clang::interp::DeclScope< Emitter >
Scope used to handle temporaries in toplevel variable declarations. More...
class clang::interp::OptionScope< Emitter >
Scope used to handle initialization methods. More...
class clang::interp::LoopScope< Emitter >
Sets the context for break/continue statements. More...
class clang::interp::SwitchScope< Emitter >
class clang::interp::StmtExprScope< Emitter >
class clang::interp::LocOverrideScope< Emitter >
When generating code for e.g. More...
Namespaces
namespace clang
The JSON file list parser is used to communicate input to InstallAPI.
namespace clang::interp
Macros
#define EMIT_ARITH_OP(OP)
Typedefs
using APSInt = llvm::APSInt
Functions
static std::optional< bool > clang::interp::getBoolValue (const Expr *E)
static CharUnits AlignOfType (QualType T, const ASTContext &ASTCtx, UnaryExprOrTypeTrait Kind)
static const Expr * stripCheckedDerivedToBaseCasts (const Expr *E)
static const Expr * stripDerivedToBaseCasts (const Expr *E)
static bool hasTrivialDefaultCtorParent (const FieldDecl *FD)
static bool initNeedsOverridenLoc (const CXXCtorInitializer *Init)
static uint32_t getBitWidth (const Expr *E)

EMIT_ARITH_OP

#define EMIT_ARITH_OP ( OP )

Value:

{ \

if (!this->emit##OP##f(getFPOptions(E), E)) \

return false; \

} else { \

if (!this->emit##OP(ElemT, E)) \

return false; \

} \

break; \

}

static void emit(Program &P, llvm::SmallVectorImpl< std::byte > &Code, const T &Val, bool &Success)

Helper to write bytecode and bail out if 32-bit offsets become invalid.

Referenced by clang::interp::Compiler< Emitter >::VisitVectorBinOp().

APSInt

using APSInt = llvm::APSInt

AlignOfType()

getBitWidth()

uint32_t getBitWidth ( const Expr * E) static

hasTrivialDefaultCtorParent()

initNeedsOverridenLoc()

stripCheckedDerivedToBaseCasts()

const Expr * stripCheckedDerivedToBaseCasts ( const Expr * E) static

stripDerivedToBaseCasts()

const Expr * stripDerivedToBaseCasts ( const Expr * E) static