aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r--lib/Driver/Tools.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 62b1febd52..ef759ff6d3 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1429,12 +1429,18 @@ static bool ShouldDisableCFI(const ArgList &Args,
Default);
}
-static bool ShouldDisableDwarfDirectory(const ArgList &Args,
- const ToolChain &TC) {
+static bool ShouldUseIntegratedAssembler(const ArgList &Args,
+ const ToolChain &TC) {
bool IsIADefault = TC.IsIntegratedAssemblerDefault();
bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
options::OPT_no_integrated_as,
IsIADefault);
+ return UseIntegratedAs;
+}
+
+static bool ShouldDisableDwarfDirectory(const ArgList &Args,
+ const ToolChain &TC) {
+ bool UseIntegratedAs = ShouldUseIntegratedAssembler(Args, TC);
bool UseDwarfDirectory = Args.hasFlag(options::OPT_fdwarf_directory_asm,
options::OPT_fno_dwarf_directory_asm,
UseIntegratedAs);
@@ -2778,6 +2784,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-fmodules");
HaveModules = true;
}
+
+ if (HaveModules && !ShouldUseIntegratedAssembler(Args, getToolChain())) {
+ D.Diag(diag::err_drv_modules_integrated_as);
+ D.Diag(diag::note_drv_modules_integrated_as);
+ return;
+ }
}
// If a module path was provided, pass it along. Otherwise, use a temporary