diff options
Diffstat (limited to 'clang/include')
-rw-r--r-- | clang/include/clang/Basic/DiagnosticDriverKinds.td | 3 | ||||
-rw-r--r-- | clang/include/clang/Driver/Action.h | 27 |
2 files changed, 29 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 262861b6a2d..c0606e47706 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -296,6 +296,9 @@ def warn_drv_vectorize_needs_hvx : Warning< "auto-vectorization requires HVX, use -mhvx to enable it">, InGroup<OptionIgnored>; +def err_drv_module_header_wrong_kind : Error< + "header file '%0' input type '%1' does not match type of prior input " + "in module compilation; use '-x %2' to override">; def err_drv_modules_validate_once_requires_timestamp : Error< "option '-fmodules-validate-once-per-build-session' requires " "'-fbuild-session-timestamp=<seconds since Epoch>' or '-fbuild-session-file=<file>'">; diff --git a/clang/include/clang/Driver/Action.h b/clang/include/clang/Driver/Action.h index 723fbbed359..f4aaa6c544a 100644 --- a/clang/include/clang/Driver/Action.h +++ b/clang/include/clang/Driver/Action.h @@ -59,6 +59,7 @@ public: OffloadClass, PreprocessJobClass, PrecompileJobClass, + HeaderModulePrecompileJobClass, AnalyzeJobClass, MigrateJobClass, CompileJobClass, @@ -398,12 +399,36 @@ public: class PrecompileJobAction : public JobAction { void anchor() override; +protected: + PrecompileJobAction(ActionClass Kind, Action *Input, types::ID OutputType); + public: PrecompileJobAction(Action *Input, types::ID OutputType); static bool classof(const Action *A) { - return A->getKind() == PrecompileJobClass; + return A->getKind() == PrecompileJobClass || + A->getKind() == HeaderModulePrecompileJobClass; + } +}; + +class HeaderModulePrecompileJobAction : public PrecompileJobAction { + void anchor() override; + + const char *ModuleName; + +public: + HeaderModulePrecompileJobAction(Action *Input, types::ID OutputType, + const char *ModuleName); + + static bool classof(const Action *A) { + return A->getKind() == HeaderModulePrecompileJobClass; } + + void addModuleHeaderInput(Action *Input) { + getInputs().push_back(Input); + } + + const char *getModuleName() const { return ModuleName; } }; class AnalyzeJobAction : public JobAction { |