diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-10-16 01:49:05 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-10-16 01:49:05 +0000 |
| commit | 0018a59d01406d145c96fc45a7063ee915f95649 (patch) | |
| tree | 0baf8684df32a75925295a352d12a9eddc809a17 /llvm/lib/IR | |
| parent | bf5391d2ef27b3956ed63e981eb5dae561b43c4d (diff) | |
| download | bcm5719-llvm-0018a59d01406d145c96fc45a7063ee915f95649.tar.gz bcm5719-llvm-0018a59d01406d145c96fc45a7063ee915f95649.zip | |
Add support for metadata representing .ident directives.
llvm-svn: 192764
Diffstat (limited to 'llvm/lib/IR')
| -rw-r--r-- | llvm/lib/IR/Verifier.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index c7559c1bf9d..7d657def326 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -216,6 +216,7 @@ namespace { visitNamedMDNode(*I); visitModuleFlags(M); + visitModuleIdents(M); // Verify Debug Info. verifyDebugInfo(M); @@ -260,6 +261,7 @@ namespace { void visitGlobalAlias(GlobalAlias &GA); void visitNamedMDNode(NamedMDNode &NMD); void visitMDNode(MDNode &MD, Function *F); + void visitModuleIdents(Module &M); void visitModuleFlags(Module &M); void visitModuleFlag(MDNode *Op, DenseMap<MDString*, MDNode*> &SeenIDs, SmallVectorImpl<MDNode*> &Requirements); @@ -613,6 +615,24 @@ void Verifier::visitMDNode(MDNode &MD, Function *F) { } } +void Verifier::visitModuleIdents(Module &M) { + const NamedMDNode *Idents = M.getNamedMetadata("llvm.ident"); + if (!Idents) + return; + + // llvm.ident takes a list of metadata entry. Each entry has only one string. + // Scan each llvm.ident entry and make sure that this requirement is met. + for (unsigned i = 0, e = Idents->getNumOperands(); i != e; ++i) { + const MDNode *N = Idents->getOperand(i); + Assert1(N->getNumOperands() == 1, + "incorrect number of operands in llvm.ident metadata", N); + Assert1(isa<MDString>(N->getOperand(0)), + ("invalid value for llvm.ident metadata entry operand" + "(the operand should be a string)"), + N->getOperand(0)); + } +} + void Verifier::visitModuleFlags(Module &M) { const NamedMDNode *Flags = M.getModuleFlagsMetadata(); if (!Flags) return; |

