]> granicus.if.org Git - clang/commitdiff
Driver/no-integrated-as: Fix forwarding of -g flag to assembler, when .s input
authorDaniel Dunbar <daniel@zuster.org>
Tue, 12 Apr 2011 23:59:20 +0000 (23:59 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 12 Apr 2011 23:59:20 +0000 (23:59 +0000)
undergoes preprocessing.

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

lib/Driver/Tools.cpp

index 287056fc7b41a2475f6b523e7789a95bbbfc78fd..86c0fe8932f000240e85c9374f24f256269a6b55 100644 (file)
@@ -2604,11 +2604,16 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
   assert(Inputs.size() == 1 && "Unexpected number of inputs.");
   const InputInfo &Input = Inputs[0];
 
-  // Bit of a hack, this is only used for original inputs.
-  //
-  // FIXME: This is broken for preprocessed .s inputs.
-  if (Input.isFilename() &&
-      strcmp(Input.getFilename(), Input.getBaseInput()) == 0) {
+  // 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) {
     if (Args.hasArg(options::OPT_gstabs))
       CmdArgs.push_back("--gstabs");
     else if (Args.hasArg(options::OPT_g_Group))