diff options
author | Manman Ren <manman.ren@gmail.com> | 2014-01-16 01:51:12 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2014-01-16 01:51:12 +0000 |
commit | 2666b15908125479cea95066593873168127be72 (patch) | |
tree | 8d18e91c3cba8e0add24b9b49b01c00919cc2324 /include/llvm | |
parent | 897473a28dc52e941923ea22939f69dacb85a547 (diff) | |
download | llvm-2666b15908125479cea95066593873168127be72.tar.gz llvm-2666b15908125479cea95066593873168127be72.tar.bz2 llvm-2666b15908125479cea95066593873168127be72.tar.xz |
Report a warning when dropping outdated debug info metadata.
Use DiagnosticInfo to emit the warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199346 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/IR/DiagnosticInfo.h | 30 | ||||
-rw-r--r-- | include/llvm/IR/DiagnosticPrinter.h | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/include/llvm/IR/DiagnosticInfo.h b/include/llvm/IR/DiagnosticInfo.h index 151e155eaf..4c7af89d72 100644 --- a/include/llvm/IR/DiagnosticInfo.h +++ b/include/llvm/IR/DiagnosticInfo.h @@ -39,6 +39,7 @@ enum DiagnosticSeverity { enum DiagnosticKind { DK_InlineAsm, DK_StackSize, + DK_DebugMetadataVersion, DK_FirstPluginKind }; @@ -160,6 +161,35 @@ public: } }; +/// Diagnostic information for debug metadata version reporting. +/// This is basically a module and a version. +class DiagnosticInfoDebugMetadataVersion : public DiagnosticInfo { +private: + /// The module that is concerned by this debug metadata version diagnostic. + const Module &M; + /// The actual metadata version. + unsigned MetadataVersion; + +public: + /// \p The module that is concerned by this debug metadata version diagnostic. + /// \p The actual metadata version. + DiagnosticInfoDebugMetadataVersion(const Module &M, unsigned MetadataVersion, + DiagnosticSeverity Severity = DS_Warning) + : DiagnosticInfo(DK_DebugMetadataVersion, Severity), M(M), + MetadataVersion(MetadataVersion) {} + + const Module &getModule() const { return M; } + unsigned getMetadataVersion() const { return MetadataVersion; } + + /// \see DiagnosticInfo::print. + virtual void print(DiagnosticPrinter &DP) const; + + /// Hand rolled RTTI. + static bool classof(const DiagnosticInfo *DI) { + return DI->getKind() == DK_DebugMetadataVersion; + } +}; + } // End namespace llvm #endif diff --git a/include/llvm/IR/DiagnosticPrinter.h b/include/llvm/IR/DiagnosticPrinter.h index 721b1b4212..6177b7fe10 100644 --- a/include/llvm/IR/DiagnosticPrinter.h +++ b/include/llvm/IR/DiagnosticPrinter.h @@ -20,6 +20,7 @@ namespace llvm { // Forward declarations. +class Module; class raw_ostream; class StringRef; class Twine; @@ -49,6 +50,7 @@ public: // IR related types. virtual DiagnosticPrinter &operator<<(const Value &V) = 0; + virtual DiagnosticPrinter &operator<<(const Module &M) = 0; }; /// \brief Basic diagnostic printer that uses an underlying raw_ostream. @@ -78,6 +80,7 @@ public: // IR related types. virtual DiagnosticPrinter &operator<<(const Value &V); + virtual DiagnosticPrinter &operator<<(const Module &M); }; } // End namespace llvm |