summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Moreau <dev@pmoreau.org>2018-04-17 17:58:36 +0200
committerAlexey Sotkin <alexey.sotkin@intel.com>2018-04-24 12:21:49 +0300
commit24ff9c0f0129c86339d273ba14ba3d9045d4b518 (patch)
treeeddc73178e83aa1ba6fd522c32b0b26de1a1e286
parentaaa052985c2f0b2e44fe20ab7ff6b7e295b61907 (diff)
Use clang-tidy to add missing “override” keywords
Command used: /usr/share/clang/run-clang-tidy.py -fix -format -header-filter "(./include/SPIRV.h|./lib/SPIRV/Mangler/FunctionDescriptor.h|./lib/SPIRV/Mangler/ManglingUtils.h|./lib/SPIRV/Mangler/NameMangleAPI.h|./lib/SPIRV/Mangler/ParameterType.h|./lib/SPIRV/Mangler/Refcount.h|./lib/SPIRV/libSPIRV/libSPIRV.h|./lib/SPIRV/libSPIRV/SPIRVBasicBlock.h|./lib/SPIRV/libSPIRV/SPIRVDebug.h|./lib/SPIRV/libSPIRV/SPIRVDecorate.h|./lib/SPIRV/libSPIRV/SPIRVEntry.h|./lib/SPIRV/libSPIRV/SPIRVEnum.h|./lib/SPIRV/libSPIRV/SPIRVError.h|./lib/SPIRV/libSPIRV/SPIRVErrorEnum.h|./lib/SPIRV/libSPIRV/SPIRVExtInst.h|./lib/SPIRV/libSPIRV/SPIRVFunction.h|./lib/SPIRV/libSPIRV/SPIRVInstruction.h|./lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h|./lib/SPIRV/libSPIRV/SPIRVModule.h|./lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h|./lib/SPIRV/libSPIRV/SPIRVOpCode.h|./lib/SPIRV/libSPIRV/SPIRVOpCodeEnum.h|./lib/SPIRV/libSPIRV/SPIRVStream.h|./lib/SPIRV/libSPIRV/SPIRVType.h|./lib/SPIRV/libSPIRV/SPIRVUtil.h|./lib/SPIRV/libSPIRV/SPIRVValue.h|./lib/SPIRV/runtime/OpenCL/inc/spirv.h|./lib/SPIRV/runtime/OpenCL/inc/spirv_convert.h|./lib/SPIRV/OCLUtil.h|./lib/SPIRV/OCLTypeToSPIRV.h|./lib/SPIRV/SPIRVInternal.h|./lib/SPIRV/SPIRVMDBuilder.h|./lib/SPIRV/SPIRVMDWalker.h|./lib/SPIRV/SPIRVWriterPass.h)" -checks="-*,modernize-use-override" `find . -iname "*.cpp"`
-rw-r--r--lib/SPIRV/Mangler/Mangler.cpp12
-rw-r--r--lib/SPIRV/Mangler/ParameterType.h36
-rw-r--r--lib/SPIRV/OCL20To12.cpp2
-rw-r--r--lib/SPIRV/OCL20ToSPIRV.cpp4
-rw-r--r--lib/SPIRV/OCL21ToSPIRV.cpp2
-rw-r--r--lib/SPIRV/OCLTypeToSPIRV.h4
-rw-r--r--lib/SPIRV/OCLUtil.cpp2
-rw-r--r--lib/SPIRV/SPIRVLowerBool.cpp2
-rw-r--r--lib/SPIRV/SPIRVLowerConstExpr.cpp2
-rw-r--r--lib/SPIRV/SPIRVLowerMemmove.cpp2
-rw-r--r--lib/SPIRV/SPIRVLowerOCLBlocks.cpp4
-rw-r--r--lib/SPIRV/SPIRVRegularizeLLVM.cpp2
-rw-r--r--lib/SPIRV/SPIRVToOCL20.cpp2
-rw-r--r--lib/SPIRV/SPIRVWriter.cpp4
-rw-r--r--lib/SPIRV/TransOCLMD.cpp2
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVBasicBlock.h8
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVDecorate.h22
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVEntry.h16
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVFunction.h10
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVInstruction.h148
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVModule.cpp440
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVType.h70
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVValue.h36
23 files changed, 419 insertions, 413 deletions
diff --git a/lib/SPIRV/Mangler/Mangler.cpp b/lib/SPIRV/Mangler/Mangler.cpp
index 9fa9856..b080477 100644
--- a/lib/SPIRV/Mangler/Mangler.cpp
+++ b/lib/SPIRV/Mangler/Mangler.cpp
@@ -85,7 +85,7 @@ public:
//
// Visit methods
//
- MangleError visit(const PrimitiveType *t) {
+ MangleError visit(const PrimitiveType *t) override {
MangleError me = MANGLE_SUCCESS;
#if defined(SPIRV_SPIR20_MANGLING_REQUIREMENTS)
m_stream << mangledPrimitiveString(t->getPrimitive());
@@ -109,7 +109,7 @@ public:
return me;
}
- MangleError visit(const PointerType *p) {
+ MangleError visit(const PointerType *p) override {
size_t fpos = m_stream.str().size();
std::string qualStr;
MangleError me = MANGLE_SUCCESS;
@@ -137,7 +137,7 @@ public:
return me;
}
- MangleError visit(const VectorType *v) {
+ MangleError visit(const VectorType *v) override {
size_t index = m_stream.str().size();
std::stringstream typeStr;
typeStr << "Dv" << v->getLength() << "_";
@@ -153,7 +153,7 @@ public:
return me;
}
- MangleError visit(const AtomicType *p) {
+ MangleError visit(const AtomicType *p) override {
MangleError me = MANGLE_SUCCESS;
size_t index = m_stream.str().size();
const char *typeStr = "U7_Atomic";
@@ -165,7 +165,7 @@ public:
return me;
}
- MangleError visit(const BlockType *p) {
+ MangleError visit(const BlockType *p) override {
m_stream << "U"
<< "13block_pointerFv";
if (p->getNumOfParams() == 0)
@@ -181,7 +181,7 @@ public:
return MANGLE_SUCCESS;
}
- MangleError visit(const UserDefinedType *pTy) {
+ MangleError visit(const UserDefinedType *pTy) override {
std::string name = pTy->toString();
m_stream << name.size() << name;
return MANGLE_SUCCESS;
diff --git a/lib/SPIRV/Mangler/ParameterType.h b/lib/SPIRV/Mangler/ParameterType.h
index f81422f..0c33f8b 100644
--- a/lib/SPIRV/Mangler/ParameterType.h
+++ b/lib/SPIRV/Mangler/ParameterType.h
@@ -166,17 +166,17 @@ struct PrimitiveType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor.
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief Returns a string representation of the underlying type.
/// @return type as string.
- std::string toString() const;
+ std::string toString() const override;
/// @brief Returns true if given param type is equal to this type.
/// @param ParamType given param type.
/// @return true if given param type is equal to this type and false
/// otherwise.
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
/// Non-Common Methods ///
@@ -203,17 +203,17 @@ struct PointerType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief Returns a string representation of the underlying type.
/// @return type as string.
- std::string toString() const;
+ std::string toString() const override;
/// @brief Returns true if given param type is equal to this type.
/// @param ParamType given param type.
/// @return true if given param type is equal to this type and false
/// otherwise.
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
/// Non-Common Methods ///
@@ -264,17 +264,17 @@ struct VectorType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor.
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief Returns a string representation of the underlying type.
/// @return type as string.
- std::string toString() const;
+ std::string toString() const override;
/// @brief Returns true if given param type is equal to this type.
/// @param ParamType given param type.
/// @return true if given param type is equal to this type and false
/// otherwise.
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
/// Non-Common Methods ///
@@ -307,16 +307,16 @@ struct AtomicType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief returns a string representation of the underlying type.
/// @return type as string
- std::string toString() const;
+ std::string toString() const override;
/// @brief returns true if given param type is equal to this type.
/// @param ParamType given param type
/// @return true if given param type is equal to this type and false otherwise
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
/// Non-Common Methods ///
@@ -342,16 +342,16 @@ struct BlockType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief returns a string representation of the underlying type.
/// @return type as string
- std::string toString() const;
+ std::string toString() const override;
/// @brief returns true if given param type is equal to this type.
/// @param ParamType given param type
/// @return true if given param type is equal to this type and false otherwise
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
/// Non-Common Methods ///
@@ -398,17 +398,17 @@ struct UserDefinedType : public ParamType {
/// When overridden in subclasses, preform a 'double dispatch' to the
/// appropriate visit method in the given visitor.
/// @param TypeVisitor type visitor.
- MangleError accept(TypeVisitor *) const;
+ MangleError accept(TypeVisitor *) const override;
/// @brief Returns a string representation of the underlying type.
/// @return type as string.
- std::string toString() const;
+ std::string toString() const override;
/// @brief Returns true if given param type is equal to this type.
/// @param ParamType given param type.
/// @return true if given param type is equal to this type and false
/// otherwise.
- bool equals(const ParamType *) const;
+ bool equals(const ParamType *) const override;
protected:
/// The name of the user defined type.
diff --git a/lib/SPIRV/OCL20To12.cpp b/lib/SPIRV/OCL20To12.cpp
index e1a92e0..3ad60d9 100644
--- a/lib/SPIRV/OCL20To12.cpp
+++ b/lib/SPIRV/OCL20To12.cpp
@@ -60,7 +60,7 @@ public:
OCL20To12() : ModulePass(ID), M(nullptr), Ctx(nullptr) {
initializeOCL20To12Pass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
virtual void visitCallInst(CallInst &CI);
/// Transform atomic_work_item_fence to mem_fence.
diff --git a/lib/SPIRV/OCL20ToSPIRV.cpp b/lib/SPIRV/OCL20ToSPIRV.cpp
index dcbff75..469ef3b 100644
--- a/lib/SPIRV/OCL20ToSPIRV.cpp
+++ b/lib/SPIRV/OCL20ToSPIRV.cpp
@@ -73,9 +73,9 @@ public:
OCL20ToSPIRV() : ModulePass(ID), M(nullptr), Ctx(nullptr), CLVer(0) {
initializeOCL20ToSPIRVPass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
- void getAnalysisUsage(AnalysisUsage &AU) const {
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.addRequired<OCLTypeToSPIRV>();
}
diff --git a/lib/SPIRV/OCL21ToSPIRV.cpp b/lib/SPIRV/OCL21ToSPIRV.cpp
index 03dcdce..3306c1f 100644
--- a/lib/SPIRV/OCL21ToSPIRV.cpp
+++ b/lib/SPIRV/OCL21ToSPIRV.cpp
@@ -62,7 +62,7 @@ public:
OCL21ToSPIRV() : ModulePass(ID), M(nullptr), Ctx(nullptr), CLVer(0) {
initializeOCL21ToSPIRVPass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
virtual void visitCallInst(CallInst &CI);
/// Transform SPIR-V convert function
diff --git a/lib/SPIRV/OCLTypeToSPIRV.h b/lib/SPIRV/OCLTypeToSPIRV.h
index 20d5e92..fa4eb10 100644
--- a/lib/SPIRV/OCLTypeToSPIRV.h
+++ b/lib/SPIRV/OCLTypeToSPIRV.h
@@ -53,8 +53,8 @@ namespace SPIRV {
class OCLTypeToSPIRV : public ModulePass {
public:
OCLTypeToSPIRV();
- virtual void getAnalysisUsage(AnalysisUsage &AU) const;
- virtual bool runOnModule(Module &M);
+ void getAnalysisUsage(AnalysisUsage &AU) const override;
+ bool runOnModule(Module &M) override;
/// \return Adapted type based on kernel argument metadata. If \p V is
/// a function, returns function type.
diff --git a/lib/SPIRV/OCLUtil.cpp b/lib/SPIRV/OCLUtil.cpp
index 571beea..f2dd4e3 100644
--- a/lib/SPIRV/OCLUtil.cpp
+++ b/lib/SPIRV/OCLUtil.cpp
@@ -361,7 +361,7 @@ static FunctionType *getBlockInvokeTy(Function *F, unsigned blockIdx) {
class OCLBuiltinFuncMangleInfo : public SPIRV::BuiltinFuncMangleInfo {
public:
OCLBuiltinFuncMangleInfo(Function *f) : F(f) {}
- void init(const std::string &UniqName) {
+ void init(const std::string &UniqName) override {
UnmangledName = UniqName;
size_t Pos = std::string::npos;
diff --git a/lib/SPIRV/SPIRVLowerBool.cpp b/lib/SPIRV/SPIRVLowerBool.cpp
index 5259bcd..14a7f05 100644
--- a/lib/SPIRV/SPIRVLowerBool.cpp
+++ b/lib/SPIRV/SPIRVLowerBool.cpp
@@ -102,7 +102,7 @@ public:
replace(&I, Sel);
}
}
- virtual bool runOnModule(Module &M) {
+ bool runOnModule(Module &M) override {
Context = &M.getContext();
visit(M);
diff --git a/lib/SPIRV/SPIRVLowerConstExpr.cpp b/lib/SPIRV/SPIRVLowerConstExpr.cpp
index 9a57442..fc6d39c 100644
--- a/lib/SPIRV/SPIRVLowerConstExpr.cpp
+++ b/lib/SPIRV/SPIRVLowerConstExpr.cpp
@@ -73,7 +73,7 @@ public:
initializeSPIRVLowerConstExprPass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
void visit(Module *M);
static char ID;
diff --git a/lib/SPIRV/SPIRVLowerMemmove.cpp b/lib/SPIRV/SPIRVLowerMemmove.cpp
index 8436544..5a6170d 100644
--- a/lib/SPIRV/SPIRVLowerMemmove.cpp
+++ b/lib/SPIRV/SPIRVLowerMemmove.cpp
@@ -108,7 +108,7 @@ public:
I.dropAllReferences();
I.eraseFromParent();
}
- virtual bool runOnModule(Module &M) {
+ bool runOnModule(Module &M) override {
Context = &M.getContext();
Mod = &M;
visit(M);
diff --git a/lib/SPIRV/SPIRVLowerOCLBlocks.cpp b/lib/SPIRV/SPIRVLowerOCLBlocks.cpp
index 20514e2..f33dff3 100644
--- a/lib/SPIRV/SPIRVLowerOCLBlocks.cpp
+++ b/lib/SPIRV/SPIRVLowerOCLBlocks.cpp
@@ -101,13 +101,13 @@ public:
initializeSPIRVLowerOCLBlocksPass(*PassRegistry::getPassRegistry());
}
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.addRequired<CallGraphWrapperPass>();
AU.addRequired<AAResultsWrapperPass>();
AU.addRequired<AssumptionCacheTracker>();
}
- virtual bool runOnModule(Module &Module) {
+ bool runOnModule(Module &Module) override {
M = &Module;
lowerBlockBind();
lowerGetBlockInvoke();
diff --git a/lib/SPIRV/SPIRVRegularizeLLVM.cpp b/lib/SPIRV/SPIRVRegularizeLLVM.cpp
index 692c665..17d71fa 100644
--- a/lib/SPIRV/SPIRVRegularizeLLVM.cpp
+++ b/lib/SPIRV/SPIRVRegularizeLLVM.cpp
@@ -71,7 +71,7 @@ public:
initializeSPIRVRegularizeLLVMPass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
// Lower functions
bool regularize();
diff --git a/lib/SPIRV/SPIRVToOCL20.cpp b/lib/SPIRV/SPIRVToOCL20.cpp
index b27eae6..f61b88f 100644
--- a/lib/SPIRV/SPIRVToOCL20.cpp
+++ b/lib/SPIRV/SPIRVToOCL20.cpp
@@ -68,7 +68,7 @@ public:
SPIRVToOCL20() : ModulePass(ID), M(nullptr), Ctx(nullptr) {
initializeSPIRVToOCL20Pass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
void visitCallInst(CallInst &CI);
diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp
index baac31e..d52a017 100644
--- a/lib/SPIRV/SPIRVWriter.cpp
+++ b/lib/SPIRV/SPIRVWriter.cpp
@@ -157,7 +157,7 @@ public:
ExtSetId(SPIRVID_INVALID), SrcLang(0), SrcLangVer(0),
DbgTran(nullptr, SMod) {}
- virtual StringRef getPassName() const { return "LLVMToSPIRV"; }
+ StringRef getPassName() const override { return "LLVMToSPIRV"; }
bool runOnModule(Module &Mod) override {
M = &Mod;
@@ -168,7 +168,7 @@ public:
return true;
}
- void getAnalysisUsage(AnalysisUsage &AU) const {
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.addRequired<OCLTypeToSPIRV>();
}
diff --git a/lib/SPIRV/TransOCLMD.cpp b/lib/SPIRV/TransOCLMD.cpp
index 51112d4..bc85999 100644
--- a/lib/SPIRV/TransOCLMD.cpp
+++ b/lib/SPIRV/TransOCLMD.cpp
@@ -71,7 +71,7 @@ public:
initializeTransOCLMDPass(*PassRegistry::getPassRegistry());
}
- virtual bool runOnModule(Module &M);
+ bool runOnModule(Module &M) override;
void visit(Module *M);
static char ID;
diff --git a/lib/SPIRV/libSPIRV/SPIRVBasicBlock.h b/lib/SPIRV/libSPIRV/SPIRVBasicBlock.h
index 4d9bdc3..8b31fd9 100644
--- a/lib/SPIRV/libSPIRV/SPIRVBasicBlock.h
+++ b/lib/SPIRV/libSPIRV/SPIRVBasicBlock.h
@@ -54,7 +54,7 @@ public:
SPIRVBasicBlock() : SPIRVValue(OpLabel), ParentF(NULL) { setAttr(); }
- SPIRVDecoder getDecoder(std::istream &IS);
+ SPIRVDecoder getDecoder(std::istream &IS) override;
SPIRVFunction *getParent() const { return ParentF; }
size_t getNumInst() const { return InstVec.size(); }
SPIRVInstruction *getInst(size_t I) const { return InstVec[I]; }
@@ -74,7 +74,7 @@ public:
return *Loc;
}
- void setScope(SPIRVEntry *Scope);
+ void setScope(SPIRVEntry *Scope) override;
void setParent(SPIRVFunction *F) { ParentF = F; }
SPIRVInstruction *addInstruction(SPIRVInstruction *I);
void eraseInstruction(const SPIRVInstruction *I) {
@@ -85,8 +85,8 @@ public:
void setAttr() { setHasNoType(); }
_SPIRV_DCL_ENCDEC
- void encodeChildren(spv_ostream &) const;
- void validate() const {
+ void encodeChildren(spv_ostream &) const override;
+ void validate() const override {
SPIRVValue::validate();
assert(ParentF && "Invalid parent function");
}
diff --git a/lib/SPIRV/libSPIRV/SPIRVDecorate.h b/lib/SPIRV/libSPIRV/SPIRVDecorate.h
index 12eabba..d956299 100644
--- a/lib/SPIRV/libSPIRV/SPIRVDecorate.h
+++ b/lib/SPIRV/libSPIRV/SPIRVDecorate.h
@@ -76,7 +76,9 @@ public:
void setOwner(SPIRVDecorationGroup *owner) { Owner = owner; }
- SPIRVCapVec getRequiredCapability() const { return getCapability(Dec); }
+ SPIRVCapVec getRequiredCapability() const override {
+ return getCapability(Dec);
+ }
SPIRVWord getRequiredSPIRVVersion() const override {
switch (Dec) {
@@ -135,8 +137,8 @@ public:
SPIRVDecorate() : SPIRVDecorateGeneric(OC) {}
_SPIRV_DCL_ENCDEC
- void setWordCount(SPIRVWord);
- void validate() const {
+ void setWordCount(SPIRVWord) override;
+ void validate() const override {
SPIRVDecorateGeneric::validate();
assert(WordCount == Literals.size() + FixedWC);
}
@@ -216,9 +218,9 @@ public:
}
_SPIRV_DCL_ENCDEC
- void setWordCount(SPIRVWord);
+ void setWordCount(SPIRVWord) override;
- void validate() const {
+ void validate() const override {
SPIRVDecorateGeneric::validate();
assert(WordCount == Literals.size() + FixedWC);
}
@@ -238,7 +240,7 @@ public:
};
// Incomplete constructor
SPIRVDecorationGroup() : SPIRVEntry(OC) {}
- void encodeAll(spv_ostream &O) const;
+ void encodeAll(spv_ostream &O) const override;
_SPIRV_DCL_ENCDEC
// Move the given decorates to the decoration group
void takeDecorates(SPIRVDecorateSet &Decs) {
@@ -252,7 +254,7 @@ public:
protected:
SPIRVDecorateSet Decorations;
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == WC);
}
@@ -271,7 +273,7 @@ public:
SPIRVGroupDecorateGeneric(Op OC)
: SPIRVEntryNoIdGeneric(OC), DecorationGroup(nullptr) {}
- void setWordCount(SPIRVWord WC) {
+ void setWordCount(SPIRVWord WC) override {
SPIRVEntryNoIdGeneric::setWordCount(WC);
Targets.resize(WC - FixedWC);
}
@@ -292,7 +294,7 @@ public:
// Incomplete constructor
SPIRVGroupDecorate() : SPIRVGroupDecorateGeneric(OC) {}
- virtual void decorateTargets();
+ void decorateTargets() override;
};
class SPIRVGroupMemberDecorate : public SPIRVGroupDecorateGeneric {
@@ -305,7 +307,7 @@ public:
// Incomplete constructor
SPIRVGroupMemberDecorate() : SPIRVGroupDecorateGeneric(OC) {}
- virtual void decorateTargets();
+ void decorateTargets() override;
};
} // namespace SPIRV
diff --git a/lib/SPIRV/libSPIRV/SPIRVEntry.h b/lib/SPIRV/libSPIRV/SPIRVEntry.h
index 502a839..e7da704 100644
--- a/lib/SPIRV/libSPIRV/SPIRVEntry.h
+++ b/lib/SPIRV/libSPIRV/SPIRVEntry.h
@@ -413,7 +413,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC0
- void validate() const { assert(isValidId(SPIRVEntry::OpCode)); }
+ void validate() const override { assert(isValidId(SPIRVEntry::OpCode)); }
};
class SPIRVAnnotationGeneric : public SPIRVEntryNoIdGeneric {
@@ -464,7 +464,7 @@ public:
protected:
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
std::string Str;
};
@@ -484,7 +484,7 @@ public:
protected:
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
SPIRVWord MemberNumber;
std::string Str;
};
@@ -550,7 +550,7 @@ public:
protected:
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
SPIRVId FileName;
SPIRVWord Line;
SPIRVWord Column;
@@ -583,7 +583,9 @@ public:
SPIRVExecutionMode() : ExecMode(ExecutionModeInvocations) {}
SPIRVExecutionModeKind getExecutionMode() const { return ExecMode; }
const std::vector<SPIRVWord> &getLiterals() const { return WordLiterals; }
- SPIRVCapVec getRequiredCapability() const { return getCapability(ExecMode); }
+ SPIRVCapVec getRequiredCapability() const override {
+ return getCapability(ExecMode);
+ }
SPIRVWord getRequiredSPIRVVersion() const override {
switch (ExecMode) {
@@ -634,7 +636,7 @@ public:
protected:
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
std::string Str;
};
@@ -644,7 +646,7 @@ public:
SPIRVMemoryModel(SPIRVModule *M) : SPIRVEntryNoId(M, 3) {}
SPIRVMemoryModel() {}
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
};
class SPIRVSource : public SPIRVEntryNoId<OpSource> {
diff --git a/lib/SPIRV/libSPIRV/SPIRVFunction.h b/lib/SPIRV/libSPIRV/SPIRVFunction.h
index 19afeaa..d5506d4 100644
--- a/lib/SPIRV/libSPIRV/SPIRVFunction.h
+++ b/lib/SPIRV/libSPIRV/SPIRVFunction.h
@@ -64,14 +64,14 @@ public:
}
bool isByVal() const { return hasAttr(FunctionParameterAttributeByVal); }
bool isZext() const { return hasAttr(FunctionParameterAttributeZext); }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
if (hasLinkageType() && getLinkageType() == LinkageTypeImport)
return getVec(CapabilityLinkage);
return SPIRVCapVec();
}
protected:
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(ParentFunc && "Invalid parent function");
}
@@ -96,7 +96,7 @@ public:
: SPIRVValue(OpFunction), FuncType(NULL),
FCtrlMask(FunctionControlMaskNone) {}
- SPIRVDecoder getDecoder(std::istream &IS);
+ SPIRVDecoder getDecoder(std::istream &IS) override;
SPIRVTypeFunction *getFunctionType() const { return FuncType; }
SPIRVWord getFuncCtlMask() const { return FCtrlMask; }
size_t getNumBasicBlock() const { return BBVec.size(); }
@@ -127,10 +127,10 @@ public:
return BB;
}
- void encodeChildren(spv_ostream &) const;
+ void encodeChildren(spv_ostream &) const override;
void encodeExecutionModes(spv_ostream &) const;
_SPIRV_DCL_ENCDEC
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(FuncType && "Invalid func type");
}
diff --git a/lib/SPIRV/libSPIRV/SPIRVInstruction.h b/lib/SPIRV/libSPIRV/SPIRVInstruction.h
index 51cde45..c183f44 100644
--- a/lib/SPIRV/libSPIRV/SPIRVInstruction.h
+++ b/lib/SPIRV/libSPIRV/SPIRVInstruction.h
@@ -118,7 +118,7 @@ public:
// Incomplete constructor
SPIRVInstruction(Op TheOC = OpNop) : SPIRVValue(TheOC), BB(NULL) {}
- virtual bool isInst() const { return true; }
+ bool isInst() const override { return true; }
SPIRVBasicBlock *getParent() const { return BB; }
SPIRVInstruction *getPrevious() const { return BB->getPrevious(this); }
SPIRVInstruction *getNext() const { return BB->getNext(this); }
@@ -128,7 +128,7 @@ public:
getOperandTypes(const std::vector<SPIRVValue *> &Ops);
void setParent(SPIRVBasicBlock *);
- void setScope(SPIRVEntry *);
+ void setScope(SPIRVEntry *) override;
void addFPRoundingMode(SPIRVFPRoundingModeKind Kind) {
addDecorate(DecorationFPRoundingMode, Kind);
}
@@ -160,7 +160,7 @@ public:
}
protected:
- void validate() const { SPIRVValue::validate(); }
+ void validate() const override { SPIRVValue::validate(); }
private:
SPIRVBasicBlock *BB;
@@ -200,7 +200,7 @@ public:
: SPIRVInstruction(OC), HasVariWC(false) {
init();
}
- virtual ~SPIRVInstTemplateBase() {}
+ ~SPIRVInstTemplateBase() override {}
SPIRVInstTemplateBase *init(SPIRVType *TheType, SPIRVId TheId,
SPIRVBasicBlock *TheBB, SPIRVModule *TheModule) {
assert((TheBB || TheModule) && "Invalid BB or Module");
@@ -229,7 +229,7 @@ public:
addLit(Lit2);
addLit(Lit3);
}
- virtual bool isOperandLiteral(unsigned I) const { return Lit.count(I); }
+ bool isOperandLiteral(unsigned I) const override { return Lit.count(I); }
void addLit(unsigned L) {
if (L != ~0U)
Lit.insert(L);
@@ -266,7 +266,7 @@ public:
SPIRVEntry::setWordCount(WC);
Ops = TheOps;
}
- virtual void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
auto NumOps = WordCount - 1;
if (hasId())
@@ -300,7 +300,7 @@ public:
// Get operands which are values.
// Drop execution scope and group operation literals.
// Return other literals as uint32 constants.
- virtual std::vector<SPIRVValue *> getOperands() {
+ std::vector<SPIRVValue *> getOperands() override {
std::vector<SPIRVValue *> VOps;
auto Offset = getOperandOffset();
for (size_t I = 0, E = Ops.size() - Offset; I != E; ++I)
@@ -308,7 +308,7 @@ public:
return VOps;
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
std::vector<SPIRVEntry *> Operands;
for (size_t I = getOperandOffset(), E = Ops.size(); I < E; ++I)
if (!isOperandLiteral(I))
@@ -343,7 +343,7 @@ public:
void setHasVariableWordCount(bool VariWC) { HasVariWC = VariWC; }
protected:
- virtual void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
auto E = getEncoder(O);
if (hasType())
E << Type;
@@ -351,7 +351,7 @@ protected:
E << Id;
E << Ops;
}
- virtual void decode(std::istream &I) {
+ void decode(std::istream &I) override {
auto D = getDecoder(I);
if (hasType())
D >> Type;
@@ -371,8 +371,8 @@ class SPIRVInstTemplate : public BT {
public:
typedef BT BaseTy;
SPIRVInstTemplate() { init(); }
- virtual ~SPIRVInstTemplate() {}
- virtual void init() {
+ ~SPIRVInstTemplate() override {}
+ void init() override {
this->initImpl(OC, HasId, WC, HasVariableWC, Literal1, Literal2, Literal3);
}
};
@@ -457,20 +457,20 @@ public:
else
eraseDecorate(DecorationConstant);
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
if (SPIRVValue *V = getInitializer())
return std::vector<SPIRVEntry *>(1, V);
return std::vector<SPIRVEntry *>();
}
protected:
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(isValid(StorageClass));
assert(Initializer.size() == 1 || Initializer.empty());
assert(getType()->isTypePointer());
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Initializer.resize(WordCount - 4);
}
@@ -510,20 +510,20 @@ protected:
setHasNoId();
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
MemoryAccess.resize(TheWordCount - FixedWords);
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << PtrId << ValId << MemoryAccess;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> PtrId >> ValId >> MemoryAccess;
MemoryAccessUpdate(MemoryAccess);
}
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getSrc()->isForward() || getDst()->isForward())
return;
@@ -561,21 +561,21 @@ public:
SPIRVValue *getSrc() const { return Module->get<SPIRVValue>(PtrId); }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
MemoryAccess.resize(TheWordCount - FixedWords);
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << Type << Id << PtrId << MemoryAccess;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> Type >> Id >> PtrId >> MemoryAccess;
MemoryAccessUpdate(MemoryAccess);
}
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert((getValue(PtrId)->isForward() ||
Type == getValueType(PtrId)->getPointerElementType()) &&
@@ -589,7 +589,7 @@ private:
class SPIRVBinary : public SPIRVInstTemplateBase {
protected:
- void validate() const {
+ void validate() const override {
SPIRVId Op1 = Ops[0];
SPIRVId Op2 = Ops[1];
SPIRVType *op1Ty, *op2Ty;
@@ -709,7 +709,7 @@ protected:
setHasNoType();
}
_SPIRV_DEF_ENCDEC1(ReturnValueId)
- void validate() const { SPIRVInstruction::validate(); }
+ void validate() const override { SPIRVInstruction::validate(); }
SPIRVId ReturnValueId;
};
@@ -731,7 +731,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC1(TargetLabelId)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert(WordCount == 2);
assert(OpCode == OC);
@@ -774,12 +774,12 @@ public:
SPIRVLabel *getFalseLabel() const { return get<SPIRVLabel>(FalseLabelId); }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
BranchWeights.resize(TheWordCount - 4);
}
_SPIRV_DEF_ENCDEC4(ConditionId, TrueLabelId, FalseLabelId, BranchWeights)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert(WordCount == 4 || WordCount == 6);
assert(WordCount == BranchWeights.size() + 4);
@@ -842,12 +842,12 @@ public:
static_cast<SPIRVBasicBlock *>(BB));
}
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Pairs.resize(TheWordCount - FixedWordCount);
}
_SPIRV_DEF_ENCDEC3(Type, Id, Pairs)
- void validate() const {
+ void validate() const override {
assert(WordCount == Pairs.size() + FixedWordCount);
assert(OpCode == OC);
assert(Pairs.size() % 2 == 0);
@@ -864,7 +864,7 @@ protected:
class SPIRVCompare : public SPIRVInstTemplateBase {
protected:
- void validate() const {
+ void validate() const override {
auto Op1 = Ops[0];
auto Op2 = Ops[1];
SPIRVType *op1Ty, *op2Ty, *resTy;
@@ -947,7 +947,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC5(Type, Id, Condition, Op1, Op2)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getValue(Condition)->isForward() || getValue(Op1)->isForward() ||
getValue(Op2)->isForward())
@@ -1079,12 +1079,12 @@ public:
Func(Literals, static_cast<SPIRVBasicBlock *>(BB));
}
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Pairs.resize(TheWordCount - FixedWordCount);
}
_SPIRV_DEF_ENCDEC3(Select, Default, Pairs)
- void validate() const {
+ void validate() const override {
assert(WordCount == Pairs.size() + FixedWordCount);
assert(OpCode == OC);
assert(Pairs.size() % getPairSize() == 0);
@@ -1119,18 +1119,18 @@ public:
SPIRVValue *getDividend() const { return getValue(Dividend); }
SPIRVValue *getDivisor() const { return getValue(Divisor); }
- std::vector<SPIRVValue *> getOperands() {
+ std::vector<SPIRVValue *> getOperands() override {
std::vector<SPIRVId> Operands;
Operands.push_back(Dividend);
Operands.push_back(Divisor);
return getValues(Operands);
}
- void setWordCount(SPIRVWord FixedWordCount) {
+ void setWordCount(SPIRVWord FixedWordCount) override {
SPIRVEntry::setWordCount(FixedWordCount);
}
_SPIRV_DEF_ENCDEC4(Type, Id, Dividend, Divisor)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getValue(Dividend)->isForward() || getValue(Divisor)->isForward())
return;
@@ -1161,18 +1161,18 @@ public:
SPIRVValue *getVector() const { return getValue(Vector); }
SPIRVValue *getScalar() const { return getValue(Scalar); }
- std::vector<SPIRVValue *> getOperands() {
+ std::vector<SPIRVValue *> getOperands() override {
std::vector<SPIRVId> Operands;
Operands.push_back(Vector);
Operands.push_back(Scalar);
return getValues(Operands);
}
- void setWordCount(SPIRVWord FixedWordCount) {
+ void setWordCount(SPIRVWord FixedWordCount) override {
SPIRVEntry::setWordCount(FixedWordCount);
}
_SPIRV_DEF_ENCDEC4(Type, Id, Vector, Scalar)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getValue(Vector)->isForward() || getValue(Scalar)->isForward())
return;
@@ -1197,7 +1197,7 @@ protected:
class SPIRVUnary : public SPIRVInstTemplateBase {
protected:
- void validate() const {
+ void validate() const override {
auto Op = Ops[0];
SPIRVInstruction::validate();
if (getValue(Op)->isForward())
@@ -1315,11 +1315,11 @@ public:
ArgTypes.push_back(getValue(I)->getType());
return ArgTypes;
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Args.resize(TheWordCount - FixedWordCount);
}
- void validate() const { SPIRVInstruction::validate(); }
+ void validate() const override { SPIRVInstruction::validate(); }
protected:
std::vector<SPIRVWord> Args;
@@ -1332,8 +1332,8 @@ public:
SPIRVFunctionCall() : FunctionId(SPIRVID_INVALID) {}
SPIRVFunction *getFunction() const { return get<SPIRVFunction>(FunctionId); }
_SPIRV_DEF_ENCDEC4(Type, Id, FunctionId, Args)
- void validate() const;
- bool isOperandLiteral(unsigned Index) const { return false; }
+ void validate() const override;
+ bool isOperandLiteral(unsigned Index) const override { return false; }
protected:
SPIRVId FunctionId;
@@ -1369,7 +1369,7 @@ public:
ExtSetKind = Module->getBuiltinSet(ExtSetId);
assert(ExtSetKind == SPIRVEIS_OpenCL && "not supported");
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << Type << Id << ExtSetId;
switch (ExtSetKind) {
case SPIRVEIS_OpenCL:
@@ -1381,7 +1381,7 @@ public:
}
getEncoder(O) << Args;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> Type >> Id >> ExtSetId;
setExtSetKindById();
switch (ExtSetKind) {
@@ -1394,11 +1394,11 @@ public:
}
getDecoder(I) >> Args;
}
- void validate() const {
+ void validate() const override {
SPIRVFunctionCallGeneric::validate();
validateBuiltin(ExtSetId, ExtOp);
}
- bool isOperandLiteral(unsigned Index) const {
+ bool isOperandLiteral(unsigned Index) const override {
assert(ExtSetKind == SPIRVEIS_OpenCL &&
"Unsupported extended instruction set");
auto EOC = static_cast<OCLExtOpKind>(ExtOp);
@@ -1447,12 +1447,12 @@ public:
}
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Constituents.resize(TheWordCount - FixedWordCount);
}
_SPIRV_DEF_ENCDEC3(Type, Id, Constituents)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
switch (getValueType(this->getId())->getOpCode()) {
case OpTypeVector:
@@ -1488,14 +1488,14 @@ public:
const std::vector<SPIRVWord> &getIndices() const { return Indices; }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Indices.resize(TheWordCount - 4);
}
_SPIRV_DEF_ENCDEC4(Type, Id, Composite, Indices)
// ToDo: validate the result type is consistent with the base type and indices
// need to trace through the base type for struct types
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert(getValueType(Composite)->isTypeArray() ||
getValueType(Composite)->isTypeStruct() ||
@@ -1531,14 +1531,14 @@ public:
const std::vector<SPIRVWord> &getIndices() const { return Indices; }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Indices.resize(TheWordCount - FixedWordCount);
}
_SPIRV_DEF_ENCDEC5(Type, Id, Object, Composite, Indices)
// ToDo: validate the object type is consistent with the base type and indices
// need to trace through the base type for struct types
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert(OpCode == OC);
assert(WordCount == Indices.size() + FixedWordCount);
@@ -1572,7 +1572,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC3(Type, Id, Operand)
- void validate() const { SPIRVInstruction::validate(); }
+ void validate() const override { SPIRVInstruction::validate(); }
SPIRVId Operand;
};
@@ -1603,21 +1603,21 @@ public:
SPIRVValue *getTarget() { return getValue(Target); }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
MemoryAccess.resize(TheWordCount - FixedWords);
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << Target << Source << MemoryAccess;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> Target >> Source >> MemoryAccess;
MemoryAccessUpdate(MemoryAccess);
}
- void validate() const {
+ void validate() const override {
assert((getValueType(Id) == getValueType(Source)) && "Inconsistent type");
assert(getValueType(Id)->isTypePointer() && "Invalid type");
assert(!(getValueType(Id)->getPointerElementType()->isTypeVoid()) &&
@@ -1659,21 +1659,21 @@ public:
SPIRVValue *getSize() { return getValue(Size); }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
MemoryAccess.resize(TheWordCount - FixedWords);
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << Target << Source << Size << MemoryAccess;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> Target >> Source >> Size >> MemoryAccess;
MemoryAccessUpdate(MemoryAccess);
}
- void validate() const { SPIRVInstruction::validate(); }
+ void validate() const override { SPIRVInstruction::validate(); }
std::vector<SPIRVWord> MemoryAccess;
SPIRVId Target;
@@ -1703,7 +1703,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC4(Type, Id, VectorId, IndexId)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getValue(VectorId)->isForward())
return;
@@ -1738,7 +1738,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC5(Type, Id, VectorId, ComponentId, IndexId)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
if (getValue(VectorId)->isForward())
return;
@@ -1775,12 +1775,12 @@ public:
const std::vector<SPIRVWord> &getComponents() const { return Components; }
protected:
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
Components.resize(TheWordCount - FixedWordCount);
}
_SPIRV_DEF_ENCDEC5(Type, Id, Vector1, Vector2, Components)
- void validate() const {
+ void validate() const override {
SPIRVInstruction::validate();
assert(OpCode == OC);
assert(WordCount == Components.size() + FixedWordCount);
@@ -1814,13 +1814,13 @@ public:
setHasNoId();
setHasNoType();
}
- void setWordCount(SPIRVWord TheWordCount) {
+ void setWordCount(SPIRVWord TheWordCount) override {
SPIRVEntry::setWordCount(TheWordCount);
}
SPIRVValue *getExecScope() const { return getValue(ExecScope); }
SPIRVValue *getMemScope() const { return getValue(MemScope); }
SPIRVValue *getMemSemantic() const { return getValue(MemSema); }
- std::vector<SPIRVValue *> getOperands() {
+ std::vector<SPIRVValue *> getOperands() override {
std::vector<SPIRVId> Operands;
Operands.push_back(ExecScope);
Operands.push_back(MemScope);
@@ -1830,7 +1830,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC3(ExecScope, MemScope, MemSema)
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == 4);
SPIRVInstruction::validate();
@@ -1861,7 +1861,7 @@ public:
SPIRVWord getSize() { return Size; };
protected:
- void validate() const {
+ void validate() const override {
auto Obj = static_cast<SPIRVVariable *>(getValue(Object));
assert(Obj->getStorageClass() == StorageClassFunction &&
"Invalid storage class");
@@ -1906,7 +1906,7 @@ public:
SPIRVValue *getNumElements() const { return getValue(NumElements); }
SPIRVValue *getStride() const { return getValue(Stride); }
SPIRVValue *getEvent() const { return getValue(Event); }
- std::vector<SPIRVValue *> getOperands() {
+ std::vector<SPIRVValue *> getOperands() override {
std::vector<SPIRVId> Operands;
Operands.push_back(Destination);
Operands.push_back(Source);
@@ -1919,7 +1919,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC8(Type, Id, ExecScope, Destination, Source, NumElements,
Stride, Event)
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == WC);
SPIRVInstruction::validate();
diff --git a/lib/SPIRV/libSPIRV/SPIRVModule.cpp b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
index 67ecaf1..0a24dbf 100644
--- a/lib/SPIRV/libSPIRV/SPIRVModule.cpp
+++ b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
@@ -70,281 +70,281 @@ public:
// OpenCL memory model requires Kernel capability
setMemoryModel(MemoryModelOpenCL);
}
- virtual ~SPIRVModuleImpl();
+ ~SPIRVModuleImpl() override;
// Object query functions
- bool exist(SPIRVId) const;
- bool exist(SPIRVId, SPIRVEntry **) const;
+ bool exist(SPIRVId) const override;
+ bool exist(SPIRVId, SPIRVEntry **) const override;
SPIRVId getId(SPIRVId Id = SPIRVID_INVALID, unsigned Increment = 1);
- virtual SPIRVEntry *getEntry(SPIRVId Id) const;
- bool hasDebugInfo() const { return !StringVec.empty(); }
+ SPIRVEntry *getEntry(SPIRVId Id) const override;
+ bool hasDebugInfo() const override { return !StringVec.empty(); }
// Error handling functions
- SPIRVErrorLog &getErrorLog() { return ErrLog; }
- SPIRVErrorCode getError(std::string &ErrMsg) {
+ SPIRVErrorLog &getErrorLog() override { return ErrLog; }
+ SPIRVErrorCode getError(std::string &ErrMsg) override {
return ErrLog.getError(ErrMsg);
}
// Module query functions
- SPIRVAddressingModelKind getAddressingModel() { return AddrModel; }
- SPIRVExtInstSetKind getBuiltinSet(SPIRVId SetId) const;
- const SPIRVCapMap &getCapability() const { return CapMap; }
- bool hasCapability(SPIRVCapabilityKind Cap) const {
+ SPIRVAddressingModelKind getAddressingModel() override { return AddrModel; }
+ SPIRVExtInstSetKind getBuiltinSet(SPIRVId SetId) const override;
+ const SPIRVCapMap &getCapability() const override { return CapMap; }
+ bool hasCapability(SPIRVCapabilityKind Cap) const override {
return CapMap.find(Cap) != CapMap.end();
}
- std::set<std::string> &getExtension() { return SPIRVExt; }
- SPIRVFunction *getFunction(unsigned I) const { return FuncVec[I]; }
- SPIRVVariable *getVariable(unsigned I) const { return VariableVec[I]; }
- virtual SPIRVValue *getValue(SPIRVId TheId) const;
- virtual std::vector<SPIRVValue *>
- getValues(const std::vector<SPIRVId> &) const;
- virtual std::vector<SPIRVId> getIds(const std::vector<SPIRVEntry *> &) const;
- virtual std::vector<SPIRVId> getIds(const std::vector<SPIRVValue *> &) const;
- virtual SPIRVType *getValueType(SPIRVId TheId) const;
- virtual std::vector<SPIRVType *>
- getValueTypes(const std::vector<SPIRVId> &) const;
- SPIRVMemoryModelKind getMemoryModel() const { return MemoryModel; }
- virtual SPIRVConstant *getLiteralAsConstant(unsigned Literal);
- unsigned getNumEntryPoints(SPIRVExecutionModelKind EM) const {
+ std::set<std::string> &getExtension() override { return SPIRVExt; }
+ SPIRVFunction *getFunction(unsigned I) const override { return FuncVec[I]; }
+ SPIRVVariable *getVariable(unsigned I) const override {
+ return VariableVec[I];
+ }
+ SPIRVValue *getValue(SPIRVId TheId) const override;
+ std::vector<SPIRVValue *>
+ getValues(const std::vector<SPIRVId> &) const override;
+ std::vector<SPIRVId> getIds(const std::vector<SPIRVEntry *> &) const override;
+ std::vector<SPIRVId> getIds(const std::vector<SPIRVValue *> &) const override;
+ SPIRVType *getValueType(SPIRVId TheId) const override;
+ std::vector<SPIRVType *>
+ getValueTypes(const std::vector<SPIRVId> &) const override;
+ SPIRVMemoryModelKind getMemoryModel() const override { return MemoryModel; }
+ SPIRVConstant *getLiteralAsConstant(unsigned Literal) override;
+ unsigned getNumEntryPoints(SPIRVExecutionModelKind EM) const override {
auto Loc = EntryPointVec.find(EM);
if (Loc == EntryPointVec.end())
return 0;
return Loc->second.size();
}
- SPIRVFunction *getEntryPoint(SPIRVExecutionModelKind EM, unsigned I) const {
+ SPIRVFunction *getEntryPoint(SPIRVExecutionModelKind EM,
+ unsigned I) const override {
auto Loc = EntryPointVec.find(EM);
if (Loc == EntryPointVec.end())
return nullptr;
assert(I < Loc->second.size());
return get<SPIRVFunction>(Loc->second[I]);
}
- unsigned getNumFunctions() const { return FuncVec.size(); }
- unsigned getNumVariables() const { return VariableVec.size(); }
- SourceLanguage getSourceLanguage(SPIRVWord *Ver = nullptr) const {
+ unsigned getNumFunctions() const override { return FuncVec.size(); }
+ unsigned getNumVariables() const override { return VariableVec.size(); }
+ SourceLanguage getSourceLanguage(SPIRVWord *Ver = nullptr) const override {
if (Ver)
*Ver = SrcLangVer;
return SrcLang;
}
- std::set<std::string> &getSourceExtension() { return SrcExtension; }
- bool isEntryPoint(SPIRVExecutionModelKind, SPIRVId EP) const;
- unsigned short getGeneratorId() const { return GeneratorId; }
- unsigned short getGeneratorVer() const { return GeneratorVer; }
- SPIRVWord getSPIRVVersion() const { return SPIRVVersion; }
+ std::set<std::string> &getSourceExtension() override { return SrcExtension; }
+ bool isEntryPoint(SPIRVExecutionModelKind, SPIRVId EP) const override;
+ unsigned short getGeneratorId() const override { return GeneratorId; }
+ unsigned short getGeneratorVer() const override { return GeneratorVer; }
+ SPIRVWord getSPIRVVersion() const override { return SPIRVVersion; }
// Module changing functions
- bool importBuiltinSet(const std::string &, SPIRVId *);
- bool importBuiltinSetWithId(const std::string &, SPIRVId);
- void optimizeDecorates();
- void setAddressingModel(SPIRVAddressingModelKind AM) { AddrModel = AM; }
- void setAlignment(SPIRVValue *, SPIRVWord);
- void setMemoryModel(SPIRVMemoryModelKind MM) {
+ bool importBuiltinSet(const std::string &, SPIRVId *) override;
+ bool importBuiltinSetWithId(const std::string &, SPIRVId) override;
+ void optimizeDecorates() override;
+ void setAddressingModel(SPIRVAddressingModelKind AM) override {
+ AddrModel = AM;
+ }
+ void setAlignment(SPIRVValue *, SPIRVWord) override;
+ void setMemoryModel(SPIRVMemoryModelKind MM) override {
MemoryModel = MM;
if (MemoryModel == spv::MemoryModelOpenCL)
addCapability(CapabilityKernel);
}
- void setName(SPIRVEntry *E, const std::string &Name);
- void setSourceLanguage(SourceLanguage Lang, SPIRVWord Ver) {
+ void setName(SPIRVEntry *E, const std::string &Name) override;
+ void setSourceLanguage(SourceLanguage Lang, SPIRVWord Ver) override {
SrcLang = Lang;
SrcLangVer = Ver;
}
- void setGeneratorId(unsigned short Id) { GeneratorId = Id; }
- void setGeneratorVer(unsigned short Ver) { GeneratorVer = Ver; }
- void resolveUnknownStructFields();
+ void setGeneratorId(unsigned short Id) override { GeneratorId = Id; }
+ void setGeneratorVer(unsigned short Ver) override { GeneratorVer = Ver; }
+ void resolveUnknownStructFields() override;
void setSPIRVVersion(SPIRVWord Ver) override { SPIRVVersion = Ver; }
// Object creation functions
template <class T> void addTo(std::vector<T *> &V, SPIRVEntry *E);
- virtual SPIRVEntry *addEntry(SPIRVEntry *E);
- virtual SPIRVBasicBlock *addBasicBlock(SPIRVFunction *, SPIRVId);
- virtual SPIRVString *getString(const std::string &Str);
- virtual SPIRVMemberName *addMemberName(SPIRVTypeStruct *ST,
- SPIRVWord MemberNumber,
- const std::string &Name);
- virtual void addUnknownStructField(SPIRVTypeStruct *Struct, unsigned I,
- SPIRVId ID);
- virtual void addLine(SPIRVEntry *E, SPIRVId FileNameId, SPIRVWord Line,
- SPIRVWord Column);
- virtual const std::shared_ptr<const SPIRVLine> &getCurrentLine() const;
- virtual void setCurrentLine(const std::shared_ptr<const SPIRVLine> &Line);
- virtual void addCapability(SPIRVCapabilityKind);
- virtual void addCapabilityInternal(SPIRVCapabilityKind);
- virtual const SPIRVDecorateGeneric *addDecorate(SPIRVDecorateGeneric *);
- virtual SPIRVDecorationGroup *addDecorationGroup();
- virtual SPIRVDecorationGroup *addDecorationGroup(SPIRVDecorationGroup *Group);
- virtual SPIRVGroupDecorate *
+ SPIRVEntry *addEntry(SPIRVEntry *E) override;
+ SPIRVBasicBlock *addBasicBlock(SPIRVFunction *, SPIRVId) override;
+ SPIRVString *getString(const std::string &Str) override;
+ SPIRVMemberName *addMemberName(SPIRVTypeStruct *ST, SPIRVWord MemberNumber,
+ const std::string &Name) override;
+ void addUnknownStructField(SPIRVTypeStruct *Struct, unsigned I,
+ SPIRVId ID) override;
+ void addLine(SPIRVEntry *E, SPIRVId FileNameId, SPIRVWord Line,
+ SPIRVWord Column) override;
+ const std::shared_ptr<const SPIRVLine> &getCurrentLine() const override;
+ void setCurrentLine(const std::shared_ptr<const SPIRVLine> &Line) override;
+ void addCapability(SPIRVCapabilityKind) override;
+ void addCapabilityInternal(SPIRVCapabilityKind) override;
+ const SPIRVDecorateGeneric *addDecorate(SPIRVDecorateGeneric *) override;
+ SPIRVDecorationGroup *addDecorationGroup() override;
+ SPIRVDecorationGroup *
+ addDecorationGroup(SPIRVDecorationGroup *Group) override;
+ SPIRVGroupDecorate *
addGroupDecorate(SPIRVDecorationGroup *Group,
- const std::vector<SPIRVEntry *> &Targets);
- virtual SPIRVGroupDecorateGeneric *
- addGroupDecorateGeneric(SPIRVGroupDecorateGeneric *GDec);
- virtual SPIRVGroupMemberDecorate *
+ const std::vector<SPIRVEntry *> &Targets) override;
+ SPIRVGroupDecorateGeneric *
+ addGroupDecorateGeneric(SPIRVGroupDecorateGeneric *GDec) override;
+ SPIRVGroupMemberDecorate *
addGroupMemberDecorate(SPIRVDecorationGroup *Group,
- const std::vector<SPIRVEntry *> &Targets);
- virtual void addEntryPoint(SPIRVExecutionModelKind ExecModel,
- SPIRVId EntryPoint);
- virtual SPIRVForward *addForward(SPIRVType *Ty);
- virtual SPIRVForward *addForward(SPIRVId, SPIRVType *Ty);
- virtual SPIRVFunction *addFunction(SPIRVFunction *);
- virtual SPIRVFunction *addFunction(SPIRVTypeFunction *, SPIRVId);
- virtual SPIRVEntry *replaceForward(SPIRVForward *, SPIRVEntry *);
- virtual void eraseInstruction(SPIRVInstruction *, SPIRVBasicBlock *);
+ const std::vector<SPIRVEntry *> &Targets) override;
+ void addEntryPoint(SPIRVExecutionModelKind ExecModel,
+ SPIRVId EntryPoint) override;
+ SPIRVForward *addForward(SPIRVType *Ty) override;
+ SPIRVForward *addForward(SPIRVId, SPIRVType *Ty) override;
+ SPIRVFunction *addFunction(SPIRVFunction *) override;
+ SPIRVFunction *addFunction(SPIRVTypeFunction *, SPIRVId) override;
+ SPIRVEntry *replaceForward(SPIRVForward *, SPIRVEntry *) override;
+ void eraseInstruction(SPIRVInstruction *, SPIRVBasicBlock *) override;
// Type creation functions
template <class T> T *addType(T *Ty);
- virtual SPIRVTypeArray *addArrayType(SPIRVType *, SPIRVConstant *);
- virtual SPIRVTypeBool *addBoolType();
- virtual SPIRVTypeFloat *addFloatType(unsigned BitWidth);
- virtual SPIRVTypeFunction *addFunctionType(SPIRVType *,
- const std::vector<SPIRVType *> &);
- virtual SPIRVTypeInt *addIntegerType(unsigned BitWidth);
- virtual SPIRVTypeOpaque *addOpaqueType(const std::string &);
- virtual SPIRVTypePointer *addPointerType(SPIRVStorageClassKind, SPIRVType *);
- virtual SPIRVTypeImage *addImageType(SPIRVType *,
- const SPIRVTypeImageDescriptor &);
- virtual SPIRVTypeImage *addImageType(SPIRVType *,
- const SPIRVTypeImageDescriptor &,
- SPIRVAccessQualifierKind);
- virtual SPIRVTypeSampler *addSamplerType();
- virtual SPIRVTypePipeStorage *addPipeStorageType();
- virtual SPIRVTypeSampledImage *addSampledImageType(SPIRVTypeImage *T);
- virtual SPIRVTypeStruct *openStructType(unsigned, const std::string &);
- virtual void closeStructType(SPIRVTypeStruct *T, bool);
- virtual SPIRVTypeVector *addVectorType(SPIRVType *, SPIRVWord);
- virtual SPIRVType *addOpaqueGenericType(Op);
- virtual SPIRVTypeDeviceEvent *addDeviceEventType();
- virtual SPIRVTypeQueue *addQueueType();
- virtual SPIRVTypePipe *addPipeType();
- virtual SPIRVTypeVoid *addVoidType();
- virtual void createForwardPointers();
+ SPIRVTypeArray *addArrayType(SPIRVType *, SPIRVConstant *) override;
+ SPIRVTypeBool *addBoolType() override;
+ SPIRVTypeFloat *addFloatType(unsigned BitWidth) override;
+ SPIRVTypeFunction *addFunctionType(SPIRVType *,
+ const std::vector<SPIRVType *> &) override;
+ SPIRVTypeInt *addIntegerType(unsigned BitWidth) override;
+ SPIRVTypeOpaque *addOpaqueType(const std::string &) override;
+ SPIRVTypePointer *addPointerType(SPIRVStorageClassKind, SPIRVType *) override;
+ SPIRVTypeImage *addImageType(SPIRVType *,
+ const SPIRVTypeImageDescriptor &) override;
+ SPIRVTypeImage *addImageType(SPIRVType *, const SPIRVTypeImageDescriptor &,
+ SPIRVAccessQualifierKind) override;
+ SPIRVTypeSampler *addSamplerType() override;
+ SPIRVTypePipeStorage *addPipeStorageType() override;
+ SPIRVTypeSampledImage *addSampledImageType(SPIRVTypeImage *T) override;
+ SPIRVTypeStruct *openStructType(unsigned, const std::string &) override;
+ void closeStructType(SPIRVTypeStruct *T, bool) override;
+ SPIRVTypeVector *addVectorType(SPIRVType *, SPIRVWord) override;
+ SPIRVType *addOpaqueGenericType(Op) override;
+ SPIRVTypeDeviceEvent *addDeviceEventType() override;
+ SPIRVTypeQueue *addQueueType() override;
+ SPIRVTypePipe *addPipeType() override;
+ SPIRVTypeVoid *addVoidType() override;
+ void createForwardPointers() override;
// Constant creation functions
- virtual SPIRVInstruction *addBranchInst(SPIRVLabel *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addBranchConditionalInst(SPIRVValue *, SPIRVLabel *,
- SPIRVLabel *,
- SPIRVBasicBlock *);
- virtual SPIRVValue *addCompositeConstant(SPIRVType *,
- const std::vector<SPIRVValue *> &);
- virtual SPIRVValue *addConstant(SPIRVValue *);
- virtual SPIRVValue *addConstant(SPIRVType *, uint64_t);
- virtual SPIRVValue *addDoubleConstant(SPIRVTypeFloat *, double);
- virtual SPIRVValue *addFloatConstant(SPIRVTypeFloat *, float);
- virtual SPIRVValue *addIntegerConstant(SPIRVTypeInt *, uint64_t);
- virtual SPIRVValue *addNullConstant(SPIRVType *);
- virtual SPIRVValue *addUndef(SPIRVType *TheType);
- virtual SPIRVValue *addSamplerConstant(SPIRVType *TheType, SPIRVWord AddrMode,
- SPIRVWord ParametricMode,
- SPIRVWord FilterMode);
- virtual SPIRVValue *addPipeStorageConstant(SPIRVType *TheType,
- SPIRVWord PacketSize,
- SPIRVWord PacketAlign,
- SPIRVWord Capacity);
+ SPIRVInstruction *addBranchInst(SPIRVLabel *, SPIRVBasicBlock *) override;
+ SPIRVInstruction *addBranchConditionalInst(SPIRVValue *, SPIRVLabel *,
+ SPIRVLabel *,
+ SPIRVBasicBlock *) override;
+ SPIRVValue *addCompositeConstant(SPIRVType *,
+ const std::vector<SPIRVValue *> &) override;
+ SPIRVValue *addConstant(SPIRVValue *) override;
+ SPIRVValue *addConstant(SPIRVType *, uint64_t) override;
+ SPIRVValue *addDoubleConstant(SPIRVTypeFloat *, double) override;
+ SPIRVValue *addFloatConstant(SPIRVTypeFloat *, float) override;
+ SPIRVValue *addIntegerConstant(SPIRVTypeInt *, uint64_t) override;
+ SPIRVValue *addNullConstant(SPIRVType *) override;
+ SPIRVValue *addUndef(SPIRVType *TheType) override;
+ SPIRVValue *addSamplerConstant(SPIRVType *TheType, SPIRVWord AddrMode,
+ SPIRVWord ParametricMode,
+ SPIRVWord FilterMode) override;
+ SPIRVValue *addPipeStorageConstant(SPIRVType *TheType, SPIRVWord PacketSize,
+ SPIRVWord PacketAlign,
+ SPIRVWord Capacity) override;
// Instruction creation functions
- virtual SPIRVInstruction *addPtrAccessChainInst(SPIRVType *, SPIRVValue *,
- std::vector<SPIRVValue *>,
- SPIRVBasicBlock *, bool);
- virtual SPIRVInstruction *
- addAsyncGroupCopy(SPIRVValue *Scope, SPIRVValue *Dest, SPIRVValue *Src,
- SPIRVValue *NumElems, SPIRVValue *Stride, SPIRVValue *Event,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addExtInst(SPIRVType *, SPIRVWord, SPIRVWord,
- const std::vector<SPIRVWord> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addExtInst(SPIRVType *, SPIRVWord, SPIRVWord,
- const std::vector<SPIRVValue *> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addBinaryInst(Op, SPIRVType *, SPIRVValue *,
- SPIRVValue *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addCallInst(SPIRVFunction *,
- const std::vector<SPIRVWord> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addCmpInst(Op, SPIRVType *, SPIRVValue *,
- SPIRVValue *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *
- addLoadInst(SPIRVValue *, const std::vector<SPIRVWord> &, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addPhiInst(SPIRVType *, std::vector<SPIRVValue *>,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *
- addCompositeConstructInst(SPIRVType *, const std::vector<SPIRVId> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *
- addCompositeExtractInst(SPIRVType *, SPIRVValue *,
- const std::vector<SPIRVWord> &, SPIRVBasicBlock *);
- virtual SPIRVInstruction *
+ SPIRVInstruction *addPtrAccessChainInst(SPIRVType *, SPIRVValue *,
+ std::vector<SPIRVValue *>,
+ SPIRVBasicBlock *, bool) override;
+ SPIRVInstruction *addAsyncGroupCopy(SPIRVValue *Scope, SPIRVValue *Dest,
+ SPIRVValue *Src, SPIRVValue *NumElems,
+ SPIRVValue *Stride, SPIRVValue *Event,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addExtInst(SPIRVType *, SPIRVWord, SPIRVWord,
+ const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addExtInst(SPIRVType *, SPIRVWord, SPIRVWord,
+ const std::vector<SPIRVValue *> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addBinaryInst(Op, SPIRVType *, SPIRVValue *, SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addCallInst(SPIRVFunction *, const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addCmpInst(Op, SPIRVType *, SPIRVValue *, SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addLoadInst(SPIRVValue *, const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addPhiInst(SPIRVType *, std::vector<SPIRVValue *>,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addCompositeConstructInst(SPIRVType *,
+ const std::vector<SPIRVId> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addCompositeExtractInst(SPIRVType *, SPIRVValue *,
+ const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *
addCompositeInsertInst(SPIRVValue *Object, SPIRVValue *Composite,
const std::vector<SPIRVWord> &Indices,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addCopyObjectInst(SPIRVType *TheType,
- SPIRVValue *Operand,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addCopyMemoryInst(SPIRVValue *, SPIRVValue *,
- const std::vector<SPIRVWord> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *
- addCopyMemorySizedInst(SPIRVValue *, SPIRVValue *, SPIRVValue *,
- const std::vector<SPIRVWord> &, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addControlBarrierInst(SPIRVValue *ExecKind,
- SPIRVValue *MemKind,
- SPIRVValue *MemSema,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addGroupInst(Op OpCode, SPIRVType *Type,
- Scope Scope,
- const std::vector<SPIRVValue *> &Ops,
- SPIRVBasicBlock *BB);
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addCopyObjectInst(SPIRVType *TheType, SPIRVValue *Operand,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addCopyMemoryInst(SPIRVValue *, SPIRVValue *,
+ const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addCopyMemorySizedInst(SPIRVValue *, SPIRVValue *,
+ SPIRVValue *,
+ const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addControlBarrierInst(SPIRVValue *ExecKind,
+ SPIRVValue *MemKind,
+ SPIRVValue *MemSema,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addGroupInst(Op OpCode, SPIRVType *Type, Scope Scope,
+ const std::vector<SPIRVValue *> &Ops,
+ SPIRVBasicBlock *BB) override;
virtual SPIRVInstruction *addInstruction(SPIRVInstruction *Inst,
SPIRVBasicBlock *BB);
- virtual SPIRVInstTemplateBase *addInstTemplate(Op OC, SPIRVBasicBlock *BB,
- SPIRVType *Ty);
- virtual SPIRVInstTemplateBase *
- addInstTemplate(Op OC, const std::vector<SPIRVWord> &Ops, SPIRVBasicBlock *BB,
- SPIRVType *Ty);
- virtual SPIRVInstruction *addLifetimeInst(Op OC, SPIRVValue *Object,
- SPIRVWord Size,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *
- addMemoryBarrierInst(Scope ScopeKind, SPIRVWord MemFlag, SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addUnreachableInst(SPIRVBasicBlock *);
- virtual SPIRVInstruction *addReturnInst(SPIRVBasicBlock *);
- virtual SPIRVInstruction *addReturnValueInst(SPIRVValue *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addSelectInst(SPIRVValue *, SPIRVValue *,
- SPIRVValue *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addLoopMergeInst(SPIRVId MergeBlock,
- SPIRVId ContinueTarget,
- SPIRVWord LoopControl,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addSelectionMergeInst(SPIRVId MergeBlock,
- SPIRVWord SelectionControl,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addStoreInst(SPIRVValue *, SPIRVValue *,
- const std::vector<SPIRVWord> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addSwitchInst(
+ SPIRVInstTemplateBase *addInstTemplate(Op OC, SPIRVBasicBlock *BB,
+ SPIRVType *Ty) override;
+ SPIRVInstTemplateBase *addInstTemplate(Op OC,
+ const std::vector<SPIRVWord> &Ops,
+ SPIRVBasicBlock *BB,
+ SPIRVType *Ty) override;
+ SPIRVInstruction *addLifetimeInst(Op OC, SPIRVValue *Object, SPIRVWord Size,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addMemoryBarrierInst(Scope ScopeKind, SPIRVWord MemFlag,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addUnreachableInst(SPIRVBasicBlock *) override;
+ SPIRVInstruction *addReturnInst(SPIRVBasicBlock *) override;
+ SPIRVInstruction *addReturnValueInst(SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addSelectInst(SPIRVValue *, SPIRVValue *, SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addLoopMergeInst(SPIRVId MergeBlock, SPIRVId ContinueTarget,
+ SPIRVWord LoopControl,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addSelectionMergeInst(SPIRVId MergeBlock,
+ SPIRVWord SelectionControl,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addStoreInst(SPIRVValue *, SPIRVValue *,
+ const std::vector<SPIRVWord> &,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addSwitchInst(
SPIRVValue *, SPIRVBasicBlock *,
const std::vector<std::pair<std::vector<SPIRVWord>, SPIRVBasicBlock *>> &,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addFModInst(SPIRVType *TheType, SPIRVId TheDividend,
- SPIRVId TheDivisor,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addVectorTimesScalarInst(SPIRVType *TheType,
- SPIRVId TheVector,
- SPIRVId TheScalar,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *addUnaryInst(Op, SPIRVType *, SPIRVValue *,
- SPIRVBasicBlock *);
- virtual SPIRVInstruction *addVariable(SPIRVType *, bool, SPIRVLinkageTypeKind,
- SPIRVValue *, const std::string &,
- SPIRVStorageClassKind,
- SPIRVBasicBlock *);
- virtual SPIRVValue *
- addVectorShuffleInst(SPIRVType *Type, SPIRVValue *Vec1, SPIRVValue *Vec2,
- const std::vector<SPIRVWord> &Components,
- SPIRVBasicBlock *BB);
- virtual SPIRVInstruction *
- addVectorExtractDynamicInst(SPIRVValue *, SPIRVValue *, SPIRVBasicBlock *);
- virtual SPIRVInstruction *addVectorInsertDynamicInst(SPIRVValue *,
- SPIRVValue *,
- SPIRVValue *,
- SPIRVBasicBlock *);
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addFModInst(SPIRVType *TheType, SPIRVId TheDividend,
+ SPIRVId TheDivisor,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addVectorTimesScalarInst(SPIRVType *TheType,
+ SPIRVId TheVector,
+ SPIRVId TheScalar,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addUnaryInst(Op, SPIRVType *, SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addVariable(SPIRVType *, bool, SPIRVLinkageTypeKind,
+ SPIRVValue *, const std::string &,
+ SPIRVStorageClassKind,
+ SPIRVBasicBlock *) override;
+ SPIRVValue *addVectorShuffleInst(SPIRVType *Type, SPIRVValue *Vec1,
+ SPIRVValue *Vec2,
+ const std::vector<SPIRVWord> &Components,
+ SPIRVBasicBlock *BB) override;
+ SPIRVInstruction *addVectorExtractDynamicInst(SPIRVValue *, SPIRVValue *,
+ SPIRVBasicBlock *) override;
+ SPIRVInstruction *addVectorInsertDynamicInst(SPIRVValue *, SPIRVValue *,
+ SPIRVValue *,
+ SPIRVBasicBlock *) override;
// I/O functions
friend spv_ostream &operator<<(spv_ostream &O, SPIRVModule &M);
diff --git a/lib/SPIRV/libSPIRV/SPIRVType.h b/lib/SPIRV/libSPIRV/SPIRVType.h
index 3dd6ac7..1b99c9e 100644
--- a/lib/SPIRV/libSPIRV/SPIRVType.h
+++ b/lib/SPIRV/libSPIRV/SPIRVType.h
@@ -141,7 +141,7 @@ public:
unsigned getBitWidth() const { return BitWidth; }
bool isSigned() const { return IsSigned; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
SPIRVCapVec CV;
switch (BitWidth) {
case 8:
@@ -161,7 +161,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC3(Id, BitWidth, IsSigned)
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
assert(BitWidth > 1 && BitWidth <= 64 && "Invalid bit width");
}
@@ -182,7 +182,7 @@ public:
unsigned getBitWidth() const { return BitWidth; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
SPIRVCapVec CV;
if (isTypeFloat(16)) {
CV.push_back(CapabilityFloat16Buffer);
@@ -197,7 +197,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC2(Id, BitWidth)
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
assert(BitWidth >= 16 && BitWidth <= 64 && "Invalid bit width");
}
@@ -225,7 +225,7 @@ public:
return static_cast<SPIRVType *>(getEntry(ElemTypeId));
}
SPIRVStorageClassKind getStorageClass() const { return ElemStorageClass; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
auto Cap = getVec(CapabilityAddresses);
if (getElementType()->isTypeFloat(16))
Cap.push_back(CapabilityFloat16Buffer);
@@ -233,13 +233,13 @@ public:
Cap.insert(Cap.end(), C.begin(), C.end());
return Cap;
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
return std::vector<SPIRVEntry *>(1, getEntry(ElemTypeId));
}
protected:
_SPIRV_DEF_ENCDEC3(Id, ElemStorageClass, ElemTypeId)
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
assert(isValid(ElemStorageClass));
}
@@ -281,7 +281,7 @@ public:
SPIRVType *getComponentType() const { return CompType; }
SPIRVWord getComponentCount() const { return CompCount; }
bool isValidIndex(SPIRVWord Index) const { return Index < CompCount; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
SPIRVCapVec V(getComponentType()->getRequiredCapability());
// Even though the capability name is "Vector16", it describes
// usage of 8-component or 16-component vectors.
@@ -290,13 +290,13 @@ public:
return std::move(V);
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
return std::vector<SPIRVEntry *>(1, CompType);
}
protected:
_SPIRV_DEF_ENCDEC3(Id, CompType, CompCount)
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
CompType->validate();
assert(CompCount == 2 || CompCount == 3 || CompCount == 4 ||
@@ -320,10 +320,10 @@ public:
SPIRVType *getElementType() const { return ElemType; }
SPIRVConstant *getLength() const;
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
return std::move(getElementType()->getRequiredCapability());
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
std::vector<SPIRVEntry *> Operands(2, ElemType);
Operands[1] = (SPIRVEntry *)getLength();
return Operands;
@@ -331,7 +331,7 @@ public:
protected:
_SPIRV_DCL_ENCDEC
- void validate() const;
+ void validate() const override;
private:
SPIRVType *ElemType; // Element Type
@@ -351,7 +351,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC2(Id, Name)
- void validate() const { SPIRVEntry::validate(); }
+ void validate() const override { SPIRVEntry::validate(); }
};
struct SPIRVTypeImageDescriptor {
@@ -433,7 +433,7 @@ public:
assert(hasAccessQualifier());
return Acc[0];
}
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
SPIRVCapVec CV;
CV.push_back(CapabilityImageBasic);
if (Desc.Dim == SPIRVImageDimKind::Dim1D)
@@ -448,7 +448,7 @@ public:
}
SPIRVType *getSampledType() const { return get<SPIRVType>(SampledType); }
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
return std::vector<SPIRVEntry *>(1, get<SPIRVType>(SampledType));
}
@@ -456,7 +456,7 @@ protected:
_SPIRV_DEF_ENCDEC9(Id, SampledType, Desc.Dim, Desc.Depth, Desc.Arrayed,
Desc.MS, Desc.Sampled, Desc.Format, Acc)
// The validation assumes OpenCL image or sampler type.
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == FixedWC + Acc.size());
assert(SampledType != SPIRVID_INVALID && "Invalid sampled type");
@@ -468,7 +468,7 @@ protected:
assert(Desc.Format == 0); // For OCL only
assert(Acc.size() <= 1);
}
- void setWordCount(SPIRVWord TheWC) {
+ void setWordCount(SPIRVWord TheWC) override {
WordCount = TheWC;
Acc.resize(WordCount - FixedWC);
}
@@ -491,7 +491,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC1(Id)
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == FixedWC);
}
@@ -511,14 +511,14 @@ public:
void setImageType(SPIRVTypeImage *TheImgTy) { ImgTy = TheImgTy; }
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
return std::vector<SPIRVEntry *>(1, ImgTy);
}
protected:
SPIRVTypeImage *ImgTy;
_SPIRV_DEF_ENCDEC2(Id, ImgTy)
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == FixedWC);
assert(ImgTy && ImgTy->isTypeImage());
@@ -537,7 +537,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC1(Id)
- void validate() const {
+ void validate() const override {
assert(OpCode == OC);
assert(WordCount == FixedWC);
}
@@ -577,12 +577,12 @@ public:
bool isPacked() const;
void setPacked(bool Packed);
- void setWordCount(SPIRVWord WordCount) {
+ void setWordCount(SPIRVWord WordCount) override {
SPIRVType::setWordCount(WordCount);
MemberTypeIdVec.resize(WordCount - 2);
}
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
std::vector<SPIRVEntry *> Operands(MemberTypeIdVec.size());
for (size_t I = 0, E = MemberTypeIdVec.size(); I < E; ++I)
Operands[I] = getEntry(MemberTypeIdVec[I]);
@@ -592,7 +592,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC2(Id, MemberTypeIdVec)
- void validate() const { SPIRVEntry::validate(); }
+ void validate() const override { SPIRVEntry::validate(); }
private:
std::vector<SPIRVId> MemberTypeIdVec; // Member Type Ids
@@ -613,7 +613,7 @@ public:
SPIRVType *getReturnType() const { return ReturnType; }
SPIRVWord getNumParameters() const { return ParamTypeVec.size(); }
SPIRVType *getParameterType(unsigned I) const { return ParamTypeVec[I]; }
- virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
std::vector<SPIRVEntry *> Operands(1 + ParamTypeVec.size(), ReturnType);
std::copy(ParamTypeVec.begin(), ParamTypeVec.end(), ++Operands.begin());
return Operands;
@@ -621,11 +621,11 @@ public:
protected:
_SPIRV_DEF_ENCDEC3(Id, ReturnType, ParamTypeVec)
- void setWordCount(SPIRVWord WordCount) {
+ void setWordCount(SPIRVWord WordCount) override {
SPIRVType::setWordCount(WordCount);
ParamTypeVec.resize(WordCount - 3);
}
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
ReturnType->validate();
for (auto T : ParamTypeVec)
@@ -653,7 +653,7 @@ public:
protected:
_SPIRV_DEF_ENCDEC1(Id)
- void validate() const { SPIRVEntry::validate(); }
+ void validate() const override { SPIRVEntry::validate(); }
SPIRVId Opn;
};
@@ -683,13 +683,13 @@ public:
// Incomplete constructor
SPIRVTypeDeviceEvent() : SPIRVType(OpTypeDeviceEvent) {}
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
return getVec(CapabilityDeviceEnqueue);
}
protected:
_SPIRV_DEF_ENCDEC1(Id)
- void validate() const { SPIRVEntry::validate(); }
+ void validate() const override { SPIRVEntry::validate(); }
};
class SPIRVTypeQueue : public SPIRVType {
@@ -703,7 +703,7 @@ public:
// Incomplete constructor
SPIRVTypeQueue() : SPIRVType(OpTypeQueue) {}
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
return getVec(CapabilityDeviceEnqueue);
}
@@ -731,11 +731,13 @@ public:
AccessQualifier = AccessQual;
assert(isValid(AccessQualifier));
}
- SPIRVCapVec getRequiredCapability() const { return getVec(CapabilityPipes); }
+ SPIRVCapVec getRequiredCapability() const override {
+ return getVec(CapabilityPipes);
+ }
protected:
_SPIRV_DEF_ENCDEC2(Id, AccessQualifier)
- void validate() const { SPIRVEntry::validate(); }
+ void validate() const override { SPIRVEntry::validate(); }
private:
SPIRVAccessQualifierKind AccessQualifier; // Access Qualifier
diff --git a/lib/SPIRV/libSPIRV/SPIRVValue.h b/lib/SPIRV/libSPIRV/SPIRVValue.h
index 924bada..2ee386c 100644
--- a/lib/SPIRV/libSPIRV/SPIRVValue.h
+++ b/lib/SPIRV/libSPIRV/SPIRVValue.h
@@ -95,7 +95,7 @@ public:
void setAlignment(SPIRVWord);
void setVolatile(bool IsVolatile);
- void validate() const {
+ void validate() const override {
SPIRVEntry::validate();
assert((!hasType() || Type) && "Invalid type");
}
@@ -109,7 +109,7 @@ public:
setHasNoType();
}
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
SPIRVCapVec CV;
if (!hasType())
return std::move(CV);
@@ -162,20 +162,20 @@ protected:
NumWords = 1;
WordCount = 3 + NumWords;
}
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(NumWords >= 1 && NumWords <= 2 && "Invalid constant size");
}
- void encode(spv_ostream &O) const {
+ void encode(spv_ostream &O) const override {
getEncoder(O) << Type << Id;
for (unsigned i = 0; i < NumWords; ++i)
getEncoder(O) << Union.Words[i];
}
- void setWordCount(SPIRVWord WordCount) {
+ void setWordCount(SPIRVWord WordCount) override {
SPIRVValue::setWordCount(WordCount);
NumWords = WordCount - 3;
}
- void decode(std::istream &I) {
+ void decode(std::istream &I) override {
getDecoder(I) >> Type >> Id;
for (unsigned i = 0; i < NumWords; ++i)
getDecoder(I) >> Union.Words[i];
@@ -202,7 +202,7 @@ public:
SPIRVConstantEmpty() : SPIRVValue(OC) {}
protected:
- void validate() const { SPIRVValue::validate(); }
+ void validate() const override { SPIRVValue::validate(); }
_SPIRV_DEF_ENCDEC2(Type, Id)
};
@@ -215,7 +215,7 @@ public:
SPIRVConstantBool() {}
protected:
- void validate() const {
+ void validate() const override {
SPIRVConstantEmpty<OC>::validate();
assert(this->Type->isTypeBool() && "Invalid type");
}
@@ -235,7 +235,7 @@ public:
SPIRVConstantNull() {}
protected:
- void validate() const {
+ void validate() const override {
SPIRVConstantEmpty::validate();
assert((Type->isTypeComposite() || Type->isTypeOpaque() ||
Type->isTypeEvent() || Type->isTypePointer() ||
@@ -255,7 +255,7 @@ public:
SPIRVUndef() {}
protected:
- void validate() const { SPIRVConstantEmpty::validate(); }
+ void validate() const override { SPIRVConstantEmpty::validate(); }
};
class SPIRVConstantComposite : public SPIRVValue {
@@ -271,18 +271,18 @@ public:
// Incomplete constructor
SPIRVConstantComposite() : SPIRVValue(OpConstantComposite) {}
std::vector<SPIRVValue *> getElements() const { return getValues(Elements); }
- std::vector<SPIRVEntry *> getNonLiteralOperands() const {
+ std::vector<SPIRVEntry *> getNonLiteralOperands() const override {
std::vector<SPIRVValue *> Elements = getElements();
return std::vector<SPIRVEntry *>(Elements.begin(), Elements.end());
}
protected:
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
for (auto &I : Elements)
getValue(I)->validate();
}
- void setWordCount(SPIRVWord WordCount) {
+ void setWordCount(SPIRVWord WordCount) override {
SPIRVEntry::setWordCount(WordCount);
Elements.resize(WordCount - 3);
}
@@ -313,7 +313,7 @@ public:
SPIRVWord getFilterMode() const { return FilterMode; }
SPIRVWord getNormalized() const { return Normalized; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
return getVec(CapabilityLiteralSampler);
}
@@ -321,7 +321,7 @@ protected:
SPIRVWord AddrMode;
SPIRVWord Normalized;
SPIRVWord FilterMode;
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(OpCode == OC);
assert(WordCount == WC);
@@ -351,7 +351,7 @@ public:
SPIRVWord getPacketAlign() const { return PacketAlign; }
SPIRVWord getCapacity() const { return Capacity; }
- SPIRVCapVec getRequiredCapability() const {
+ SPIRVCapVec getRequiredCapability() const override {
return getVec(CapabilityPipes, CapabilityPipeStorage);
}
@@ -359,7 +359,7 @@ protected:
SPIRVWord PacketSize;
SPIRVWord PacketAlign;
SPIRVWord Capacity;
- void validate() const {
+ void validate() const override {
SPIRVValue::validate();
assert(OpCode == OC);
assert(WordCount == WC);
@@ -382,7 +382,7 @@ public:
friend class SPIRVFunction;
protected:
- void validate() const {}
+ void validate() const override {}
};
} // namespace SPIRV