"invalid deployment target for -stdlib=libc++ (requires %0 or later)">;
def err_drv_invalid_feature : Error<
"invalid feature '%0' for CPU '%1'">;
-
+
def err_drv_I_dash_not_supported : Error<
"'%0' not supported, please use -iquote instead">;
def err_drv_unknown_argument : Error<"unknown argument: '%0'">;
"analyzer-config option '%0' has a key but no value">;
def err_analyzer_config_multiple_values : Error<
"analyzer-config option '%0' should contain only one '='">;
+
+def err_drv_modules_integrated_as : Error<
+ "modules can only be used with the compiler's integrated assembler">;
+def note_drv_modules_integrated_as : Note<
+ "'-no-integrated-as' cannot be used with '-fmodules'">;
}
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);
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
--- /dev/null
+// RUN: %clang -fmodules -no-integrated-as -fsyntax-only %s 2>&1 | FileCheck %s
+
+// CHECK: error: modules can only be used with the compiler's integrated assembler
+// CHECK note: '-no-integrated-as' cannot be used with '-fmodules'