diff options
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 16 |
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 |