r176897 - [driver] Only enable -fmodules-autolink if we are using the integrated assembler.
Ted Kremenek
kremenek at apple.com
Tue Mar 12 14:08:08 PDT 2013
Author: kremenek
Date: Tue Mar 12 16:08:08 2013
New Revision: 176897
URL: http://llvm.org/viewvc/llvm-project?rev=176897&view=rev
Log:
[driver] Only enable -fmodules-autolink if we are using the integrated assembler.
Fixes <rdar://problem/13289240>
Added:
cfe/trunk/test/Driver/modules_integrated_as.c
Modified:
cfe/trunk/lib/Driver/Tools.cpp
Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=176897&r1=176896&r2=176897&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Mar 12 16:08:08 2013
@@ -1414,15 +1414,21 @@ static void addExceptionArgs(const ArgLi
CmdArgs.push_back("-fexceptions");
}
+/// \brief Check if the toolchain should use the integrated assembler.
+static bool ShouldUseIntegratedAssembler(const ArgList &Args,
+ const ToolChain &TC) {
+ return Args.hasFlag(options::OPT_integrated_as,
+ options::OPT_no_integrated_as,
+ TC.IsIntegratedAssemblerDefault());
+}
+
static bool ShouldDisableCFI(const ArgList &Args,
const ToolChain &TC) {
bool Default = true;
if (TC.getTriple().isOSDarwin()) {
// The native darwin assembler doesn't support cfi directives, so
// we disable them if we think the .s file will be passed to it.
- Default = Args.hasFlag(options::OPT_integrated_as,
- options::OPT_no_integrated_as,
- TC.IsIntegratedAssemblerDefault());
+ Default = ShouldUseIntegratedAssembler(Args, TC);
}
return !Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
options::OPT_fno_dwarf2_cfi_asm,
@@ -1431,13 +1437,9 @@ static bool ShouldDisableCFI(const ArgLi
static bool ShouldDisableDwarfDirectory(const ArgList &Args,
const ToolChain &TC) {
- bool IsIADefault = TC.IsIntegratedAssemblerDefault();
- bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
- options::OPT_no_integrated_as,
- IsIADefault);
bool UseDwarfDirectory = Args.hasFlag(options::OPT_fdwarf_directory_asm,
options::OPT_fno_dwarf_directory_asm,
- UseIntegratedAs);
+ ShouldUseIntegratedAssembler(Args, TC));
return !UseDwarfDirectory;
}
@@ -2802,8 +2804,9 @@ void Clang::ConstructJob(Compilation &C,
Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro);
// -fmodules-autolink (on by default when modules is enabled) automatically
- // links against libraries for imported modules.
- if (HaveModules &&
+ // links against libraries for imported modules. This requires the
+ // integrated assembler.
+ if (HaveModules && ShouldUseIntegratedAssembler(Args, getToolChain()) &&
Args.hasFlag(options::OPT_fmodules_autolink,
options::OPT_fno_modules_autolink,
true)) {
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=176897&view=auto
==============================================================================
--- cfe/trunk/test/Driver/modules_integrated_as.c (added)
+++ cfe/trunk/test/Driver/modules_integrated_as.c Tue Mar 12 16:08:08 2013
@@ -0,0 +1,6 @@
+// RUN: %clang -fsyntax-only modules_integrated_as.c -fmodules -no-integrated-as -### 2>&1 | FileCheck %s
+
+// Test that the autolinking feature is disabled with *not* using the
+// integrated assembler.
+
+// CHECK-NOT: -fmodules-autolink
More information about the cfe-commits
mailing list