[cfe-commits] r131464 - in /cfe/trunk: lib/Driver/Tools.cpp test/Driver/cfi.c

Rafael Espindola rafael.espindola at gmail.com
Tue May 17 09:26:17 PDT 2011


Author: rafael
Date: Tue May 17 11:26:17 2011
New Revision: 131464

URL: http://llvm.org/viewvc/llvm-project?rev=131464&view=rev
Log:
The logic about -static is darwin only. For now assume that all non
darwin assembler can handle cfi. Add a test.

Added:
    cfe/trunk/test/Driver/cfi.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=131464&r1=131463&r2=131464&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue May 17 11:26:17 2011
@@ -908,21 +908,28 @@
 
 static bool ShouldDisableCFI(const ArgList &Args,
                              const ToolChain &TC) {
+  if (TC.getTriple().getOS() == llvm::Triple::Darwin) {
+    // The native darwin assembler doesn't support cfi directives, so
+    // we disable them if with think the .s file will be passed to it.
+
+    // FIXME: Duplicated code with ToolChains.cpp
+    // FIXME: This doesn't belong here, but ideally we will support static soon
+    // anyway.
+    bool HasStatic = (Args.hasArg(options::OPT_mkernel) ||
+                      Args.hasArg(options::OPT_static) ||
+                      Args.hasArg(options::OPT_fapple_kext));
+    bool IsIADefault = TC.IsIntegratedAssemblerDefault() && !HasStatic;
+    bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
+                                        options::OPT_no_integrated_as,
+                                        IsIADefault);
+    bool UseCFI = Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
+                               options::OPT_fno_dwarf2_cfi_asm,
+                               UseIntegratedAs);
+    return !UseCFI;
+  }
 
-  // FIXME: Duplicated code with ToolChains.cpp
-  // FIXME: This doesn't belong here, but ideally we will support static soon
-  // anyway.
-  bool HasStatic = (Args.hasArg(options::OPT_mkernel) ||
-                    Args.hasArg(options::OPT_static) ||
-                    Args.hasArg(options::OPT_fapple_kext));
-  bool IsIADefault = TC.IsIntegratedAssemblerDefault() && !HasStatic;
-  bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
-                                      options::OPT_no_integrated_as,
-                                      IsIADefault);
-  bool UseCFI = Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
-                             options::OPT_fno_dwarf2_cfi_asm,
-                             UseIntegratedAs);
-  return !UseCFI;
+  // For now we assume that every other assembler support CFI.
+  return false;
 }
 
 /// \brief Check whether the given input tree contains any compilation actions.

Added: cfe/trunk/test/Driver/cfi.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cfi.c?rev=131464&view=auto
==============================================================================
--- cfe/trunk/test/Driver/cfi.c (added)
+++ cfe/trunk/test/Driver/cfi.c Tue May 17 11:26:17 2011
@@ -0,0 +1,8 @@
+// RUN: %clang -ccc-host-triple i386-apple-darwin10  -static -### %s 2>&1 | \
+// RUN:  FileCheck --check-prefix=CHECK-DARWIN %s
+
+// RUN: %clang -ccc-host-triple i386-pc-linux-gnu  -static -### %s 2>&1 | \
+// RUN: FileCheck --check-prefix=CHECK-LINUX %s
+
+// CHECK-DARWIN: -fno-dwarf2-cfi-asm
+// CHECK-LINUX-NOT: -fno-dwarf2-cfi-asm





More information about the cfe-commits mailing list