diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-05-03 10:04:17 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-05-03 10:04:17 +0000 |
| commit | d58929be463b6a10e86a375020e6289d01ebb807 (patch) | |
| tree | 535f9041f7170a7c059aae48163478a190f5a335 /clang/tools/clang-cc/DependencyFile.cpp | |
| parent | f6d272f2418e0e1606316bed7a3182c19f8a210a (diff) | |
| download | bcm5719-llvm-d58929be463b6a10e86a375020e6289d01ebb807.tar.gz bcm5719-llvm-d58929be463b6a10e86a375020e6289d01ebb807.zip | |
PR4063, with feeling: Chain PP callbacks by default.
- This is somewhat cleaner and also fixes PR4063 for real, I had the
order wrong so we were just creating an empty dependency file.
llvm-svn: 70687
Diffstat (limited to 'clang/tools/clang-cc/DependencyFile.cpp')
| -rw-r--r-- | clang/tools/clang-cc/DependencyFile.cpp | 47 |
1 files changed, 3 insertions, 44 deletions
diff --git a/clang/tools/clang-cc/DependencyFile.cpp b/clang/tools/clang-cc/DependencyFile.cpp index 9ef209eeebb..34b6ecfcab8 100644 --- a/clang/tools/clang-cc/DependencyFile.cpp +++ b/clang/tools/clang-cc/DependencyFile.cpp @@ -35,10 +35,6 @@ class VISIBILITY_HIDDEN DependencyFileCallback : public PPCallbacks { std::vector<std::string> Targets; llvm::raw_ostream *OS; - // FIXME: This functionality should be moved into a common class for - // chaining callbacks. - PPCallbacks *PrevCallbacks; - private: bool FileMatchesDepCriteria(const char *Filename, SrcMgr::CharacteristicKind FileType); @@ -47,14 +43,11 @@ private: public: DependencyFileCallback(const Preprocessor *_PP, llvm::raw_ostream *_OS, - const std::vector<std::string> &_Targets, - PPCallbacks *_PrevCallbacks) - : PP(_PP), Targets(_Targets), OS(_OS), PrevCallbacks(_PrevCallbacks) { + const std::vector<std::string> &_Targets) + : PP(_PP), Targets(_Targets), OS(_OS) { } ~DependencyFileCallback() { - if (PrevCallbacks) - delete PrevCallbacks; OutputDependencyFile(); OS->flush(); delete OS; @@ -62,32 +55,6 @@ public: virtual void FileChanged(SourceLocation Loc, FileChangeReason Reason, SrcMgr::CharacteristicKind FileType); - - virtual void Ident(SourceLocation Loc, const std::string &str) { - if (PrevCallbacks) - PrevCallbacks->Ident(Loc, str); - } - - virtual void PragmaComment(SourceLocation Loc, const IdentifierInfo *Kind, - const std::string &Str) { - if (PrevCallbacks) - PrevCallbacks->PragmaComment(Loc, Kind, Str); - } - - virtual void MacroExpands(const Token &Id, const MacroInfo* MI) { - if (PrevCallbacks) - PrevCallbacks->MacroExpands(Id, MI); - } - - virtual void MacroDefined(const IdentifierInfo *II, const MacroInfo *MI) { - if (PrevCallbacks) - PrevCallbacks->MacroDefined(II, MI); - } - - virtual void MacroUndefined(const IdentifierInfo *II, const MacroInfo *MI) { - if (PrevCallbacks) - PrevCallbacks->MacroUndefined(II, MI); - } }; } @@ -135,13 +102,8 @@ bool clang::CreateDependencyFileGen(Preprocessor *PP, } } - // Claim any previous callbacks. - PPCallbacks *Prev = PP->getPPCallbacks(); - if (Prev) - PP->setPPCallbacks(0); - DependencyFileCallback *PPDep = - new DependencyFileCallback(PP, OS, DependencyTargets, Prev); + new DependencyFileCallback(PP, OS, DependencyTargets); PP->setPPCallbacks(PPDep); return true; } @@ -162,9 +124,6 @@ bool DependencyFileCallback::FileMatchesDepCriteria(const char *Filename, void DependencyFileCallback::FileChanged(SourceLocation Loc, FileChangeReason Reason, SrcMgr::CharacteristicKind FileType) { - if (PrevCallbacks) - PrevCallbacks->FileChanged(Loc, Reason, FileType); - if (Reason != PPCallbacks::EnterFile) return; |

