]> granicus.if.org Git - clang/commitdiff
Add -g to the cc1as flags only if we're dealing with an original
authorEric Christopher <echristo@apple.com>
Tue, 10 Jan 2012 00:38:01 +0000 (00:38 +0000)
committerEric Christopher <echristo@apple.com>
Tue, 10 Jan 2012 00:38:01 +0000 (00:38 +0000)
source file. Otherwise -g -save-temps will error out on the compile
of any .c file.

Fixes about 4000 of the errors in the clang-tests gdb test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147819 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
test/Driver/debug-options.c

index bacfab58b005ed84b71eb57dc762f929e9cc8c38..bd3d638afd5bc9ee22fd35bfa7b81a88e2e22869 100644 (file)
@@ -2567,12 +2567,21 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
   // Ignore explicit -force_cpusubtype_ALL option.
   (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
 
-  // Same as Clang::ConstructJob() we special case debug options to only pass
-  // -g to clang. I guess if it is wrong there then it is wrong here too :) .
-  Args.ClaimAllArgs(options::OPT_g_Group);
-  if (Arg *A = Args.getLastArg(options::OPT_g_Group))
-    if (!A->getOption().matches(options::OPT_g0))
-      CmdArgs.push_back("-g");
+  // Determine the original source input.
+  const Action *SourceAction = &JA;
+  while (SourceAction->getKind() != Action::InputClass) {
+    assert(!SourceAction->getInputs().empty() && "unexpected root action!");
+    SourceAction = SourceAction->getInputs()[0];
+  }
+
+  // Forward -g, assuming we are dealing with an actual assembly file.
+  if (SourceAction->getType() == types::TY_Asm ||
+      SourceAction->getType() == types::TY_PP_Asm) {
+    Args.ClaimAllArgs(options::OPT_g_Group);
+    if (Arg *A = Args.getLastArg(options::OPT_g_Group))
+      if (!A->getOption().matches(options::OPT_g0))
+        CmdArgs.push_back("-g");
+  }
 
   // Optionally embed the -cc1as level arguments into the debug info, for build
   // analysis.
index 867251971d26646c76a9f8bb93cc9ddc4471413f..afc3ff42cba3507eff8c22f3c4d5ae751d2893c1 100644 (file)
@@ -5,6 +5,7 @@
 // RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G3 %s
 // RUN: %clang -### -c -ganything %s 2>&1 | FileCheck -check-prefix=GANY %s
 // RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=GFOO %s
+// RUN: %clang -### -c -save-temps -g %s 2>&1 | FileCheck -check-prefix=SAVE %s
 //
 // G: "-cc1"
 // G: "-g"
@@ -17,3 +18,6 @@
 //
 // GFOO: "-cc1"
 // GFOO-NOT: "-g"
+//
+// SAVE: "-cc1as"
+// SAVE-NOT: "-g"