mirror of
https://github.com/intel/llvm.git
synced 2026-02-02 18:18:09 +08:00
[clang][Interp][NFC] Make classes final that can be final
This commit is contained in:
@@ -22,7 +22,7 @@ namespace clang {
|
||||
namespace interp {
|
||||
|
||||
/// Wrapper around boolean types.
|
||||
class Boolean {
|
||||
class Boolean final {
|
||||
private:
|
||||
/// Underlying boolean.
|
||||
bool V;
|
||||
|
||||
@@ -33,7 +33,7 @@ template <class Emitter> class LabelScope;
|
||||
|
||||
/// Compilation context for statements.
|
||||
template <class Emitter>
|
||||
class ByteCodeStmtGen : public ByteCodeExprGen<Emitter> {
|
||||
class ByteCodeStmtGen final : public ByteCodeExprGen<Emitter> {
|
||||
using LabelTy = typename Emitter::LabelTy;
|
||||
using AddrTy = typename Emitter::AddrTy;
|
||||
using OptLabelTy = llvm::Optional<LabelTy>;
|
||||
|
||||
@@ -33,7 +33,7 @@ class State;
|
||||
enum PrimType : unsigned;
|
||||
|
||||
/// Holds all information required to evaluate constexpr code in a module.
|
||||
class Context {
|
||||
class Context final {
|
||||
public:
|
||||
/// Initialises the constexpr VM.
|
||||
Context(ASTContext &Ctx);
|
||||
|
||||
@@ -48,7 +48,7 @@ using BlockMoveFn = void (*)(Block *Storage, char *SrcFieldPtr,
|
||||
using InterpSize = unsigned;
|
||||
|
||||
/// Describes a memory block created by an allocation site.
|
||||
struct Descriptor {
|
||||
struct Descriptor final {
|
||||
private:
|
||||
/// Original declaration, used to emit the error message.
|
||||
const DeclTy Source;
|
||||
|
||||
@@ -29,7 +29,7 @@ enum PrimType : uint32_t;
|
||||
/// Describes a scope block.
|
||||
///
|
||||
/// The block gathers all the descriptors of the locals defined in this block.
|
||||
class Scope {
|
||||
class Scope final {
|
||||
public:
|
||||
/// Information about a local's storage.
|
||||
struct Local {
|
||||
@@ -56,7 +56,7 @@ private:
|
||||
///
|
||||
/// Contains links to the bytecode of the function, as well as metadata
|
||||
/// describing all arguments and stack-local variables.
|
||||
class Function {
|
||||
class Function final {
|
||||
public:
|
||||
using ParamDescriptor = std::pair<PrimType, Descriptor *>;
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ template <> struct Repr<64, true> { using Type = int64_t; };
|
||||
/// These wrappers are required to shared an interface between APSint and
|
||||
/// builtin primitive numeral types, while optimising for storage and
|
||||
/// allowing methods operating on primitive type to compile to fast code.
|
||||
template <unsigned Bits, bool Signed> class Integral {
|
||||
template <unsigned Bits, bool Signed> class Integral final {
|
||||
private:
|
||||
template <unsigned OtherBits, bool OtherSigned> friend class Integral;
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ enum PrimType : unsigned;
|
||||
/// A memory block, either on the stack or in the heap.
|
||||
///
|
||||
/// The storage described by the block immediately follows it in memory.
|
||||
class Block {
|
||||
class Block final {
|
||||
public:
|
||||
// Creates a new block.
|
||||
Block(const llvm::Optional<unsigned> &DeclID, Descriptor *Desc,
|
||||
@@ -107,7 +107,7 @@ protected:
|
||||
///
|
||||
/// Dead blocks are chained in a double-linked list to deallocate them
|
||||
/// whenever pointers become dead.
|
||||
class DeadBlock {
|
||||
class DeadBlock final {
|
||||
public:
|
||||
/// Copies the block.
|
||||
DeadBlock(DeadBlock *&Root, Block *Blk);
|
||||
|
||||
@@ -37,7 +37,7 @@ class Context;
|
||||
class Record;
|
||||
|
||||
/// The program contains and links the bytecode for all functions.
|
||||
class Program {
|
||||
class Program final {
|
||||
public:
|
||||
Program(Context &Ctx) : Ctx(Ctx) {}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace interp {
|
||||
class Program;
|
||||
|
||||
/// Structure/Class descriptor.
|
||||
class Record {
|
||||
class Record final {
|
||||
public:
|
||||
/// Describes a record field.
|
||||
struct Field {
|
||||
|
||||
Reference in New Issue
Block a user