On 11.03.2013, at 21:51, Ted Kremenek <[email protected]> wrote: > Author: kremenek > Date: Mon Mar 11 15:51:52 2013 > New Revision: 176826 > > URL: http://llvm.org/viewvc/llvm-project?rev=176826&view=rev > Log: > Disallow using -fmodules with -no-integrated-as. > > Modules enables features such as auto-linking, and we simply do not want to > support a matrix of subtly enabled/disabled features depending on whether or > not a user is using the integrated assembler.
This made modules test fail on targets that don't have -integrated-as on by default. Should we limit this behavior to targets that chose to have IA on by default? - Ben > > It isn't clear if this is the best place to do this check. For one thing, > these kind of errors are not caught by the serialized diagnostics. > > Fixes <rdar://problem/13289240> > > Added: > cfe/trunk/test/Driver/modules_integrated_as.c > Modified: > cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td > cfe/trunk/lib/Driver/Tools.cpp > > Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=176826&r1=176825&r2=176826&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Mon Mar 11 > 15:51:52 2013 > @@ -75,7 +75,7 @@ def err_drv_invalid_libcxx_deployment : > "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'">; > @@ -150,4 +150,9 @@ def err_analyzer_config_no_value : Error > "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'">; > } > > Modified: cfe/trunk/lib/Driver/Tools.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=176826&r1=176825&r2=176826&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/Tools.cpp (original) > +++ cfe/trunk/lib/Driver/Tools.cpp Mon Mar 11 15:51:52 2013 > @@ -1429,12 +1429,18 @@ static bool ShouldDisableCFI(const ArgLi > 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, > 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 > > Added: cfe/trunk/test/Driver/modules_integrated_as.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/modules_integrated_as.c?rev=176826&view=auto > ============================================================================== > --- cfe/trunk/test/Driver/modules_integrated_as.c (added) > +++ cfe/trunk/test/Driver/modules_integrated_as.c Mon Mar 11 15:51:52 2013 > @@ -0,0 +1,4 @@ > +// 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' > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
