summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Verifier.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-02-10 01:09:50 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-02-10 01:09:50 +0000
commitb0a19ad08a12f2fb5c2620c1498f84f25084ddfd (patch)
tree0a74e9869d6eed5d6dd6d896a644a39bd1b71179 /llvm/lib/IR/Verifier.cpp
parented458fa12c70ab5d24d4a746a57273ce18898f4a (diff)
downloadbcm5719-llvm-b0a19ad08a12f2fb5c2620c1498f84f25084ddfd.tar.gz
bcm5719-llvm-b0a19ad08a12f2fb5c2620c1498f84f25084ddfd.zip
Verifier: Create stubs for specialized metadata nodes
llvm-svn: 228645
Diffstat (limited to 'llvm/lib/IR/Verifier.cpp')
-rw-r--r--llvm/lib/IR/Verifier.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 27d91ccea2d..e1b6f944f8a 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -303,6 +303,8 @@ private:
void visitBasicBlock(BasicBlock &BB);
void visitRangeMetadata(Instruction& I, MDNode* Range, Type* Ty);
+#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) void visit##CLASS(const CLASS &N);
+#include "llvm/IR/Metadata.def"
// InstVisitor overrides...
using InstVisitor<Verifier>::visit;
@@ -601,6 +603,18 @@ void Verifier::visitMDNode(const MDNode &MD) {
if (!MDNodes.insert(&MD).second)
return;
+ switch (MD.getMetadataID()) {
+ default:
+ llvm_unreachable("Invalid MDNode subclass");
+ case Metadata::MDTupleKind:
+ break;
+#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) \
+ case Metadata::CLASS##Kind: \
+ visit##CLASS(cast<CLASS>(MD)); \
+ break;
+#include "llvm/IR/Metadata.def"
+ }
+
for (unsigned i = 0, e = MD.getNumOperands(); i != e; ++i) {
Metadata *Op = MD.getOperand(i);
if (!Op)
@@ -664,6 +678,29 @@ void Verifier::visitMetadataAsValue(const MetadataAsValue &MDV, Function *F) {
visitValueAsMetadata(*V, F);
}
+void Verifier::visitMDLocation(const MDLocation &) {}
+void Verifier::visitGenericDebugNode(const GenericDebugNode &) {}
+void Verifier::visitMDSubrange(const MDSubrange &) {}
+void Verifier::visitMDEnumerator(const MDEnumerator &) {}
+void Verifier::visitMDBasicType(const MDBasicType &) {}
+void Verifier::visitMDDerivedType(const MDDerivedType &) {}
+void Verifier::visitMDCompositeType(const MDCompositeType &) {}
+void Verifier::visitMDSubroutineType(const MDSubroutineType &) {}
+void Verifier::visitMDFile(const MDFile &) {}
+void Verifier::visitMDCompileUnit(const MDCompileUnit &) {}
+void Verifier::visitMDSubprogram(const MDSubprogram &) {}
+void Verifier::visitMDLexicalBlock(const MDLexicalBlock &) {}
+void Verifier::visitMDLexicalBlockFile(const MDLexicalBlockFile &) {}
+void Verifier::visitMDNamespace(const MDNamespace &) {}
+void Verifier::visitMDTemplateTypeParameter(const MDTemplateTypeParameter &) {}
+void Verifier::visitMDTemplateValueParameter(const MDTemplateValueParameter &) {
+}
+void Verifier::visitMDGlobalVariable(const MDGlobalVariable &) {}
+void Verifier::visitMDLocalVariable(const MDLocalVariable &) {}
+void Verifier::visitMDExpression(const MDExpression &) {}
+void Verifier::visitMDObjCProperty(const MDObjCProperty &) {}
+void Verifier::visitMDImportedEntity(const MDImportedEntity &) {}
+
void Verifier::visitComdat(const Comdat &C) {
// All Comdat::SelectionKind values other than Comdat::Any require a
// GlobalValue with the same name as the Comdat.
OpenPOWER on IntegriCloud