diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-11-29 23:55:25 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-11-29 23:55:25 +0000 |
commit | 463d90986ec54c62bf8fe31193ef5db701db48a5 (patch) | |
tree | 70dae4bd00311bdd08f2e1f4007c7042375dea12 /include/clang/Frontend/CompilerInstance.h | |
parent | db748a380ab89b1c0b6e751e55291f57605cccce (diff) |
Keep track of modules that have failed to build. If we encounter an
import of that module elsewhere, don't try to build the module again:
it won't work, and the experience is quite dreadful. We track this
information somewhat globally, shared among all of the related
CompilerInvocations used to build modules on-the-fly, so that a
particular Clang instance will only try to build a given module once.
Fixes <rdar://problem/12552849>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168961 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Frontend/CompilerInstance.h')
-rw-r--r-- | include/clang/Frontend/CompilerInstance.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/include/clang/Frontend/CompilerInstance.h b/include/clang/Frontend/CompilerInstance.h index 2f3dc3f808..2861511dd1 100644 --- a/include/clang/Frontend/CompilerInstance.h +++ b/include/clang/Frontend/CompilerInstance.h @@ -94,7 +94,7 @@ class CompilerInstance : public ModuleLoader { /// \brief The semantic analysis object. OwningPtr<Sema> TheSema; - + /// \brief The frontend timer OwningPtr<llvm::Timer> FrontendTimer; @@ -111,7 +111,7 @@ class CompilerInstance : public ModuleLoader { /// \brief The result of the last module import. /// - Module *LastModuleImportResult; + ModuleLoadResult LastModuleImportResult; /// \brief Holds information about the output file. /// @@ -645,9 +645,10 @@ public: /// } - virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path, - Module::NameVisibilityKind Visibility, - bool IsInclusionDirective); + virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, + ModuleIdPath Path, + Module::NameVisibilityKind Visibility, + bool IsInclusionDirective); }; } // end namespace clang |