Index: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp =================================================================== --- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -544,7 +544,7 @@ StringRef Producer = DIUnit->getProducer(); StringRef Flags = DIUnit->getFlags(); - if (!Flags.empty()) { + if (!Flags.empty() && !useAppleExtensionAttributes()) { std::string ProducerWithFlags = Producer.str() + " " + Flags.str(); NewCU.addString(Die, dwarf::DW_AT_producer, ProducerWithFlags); } else Index: llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll =================================================================== --- llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll +++ llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll @@ -1,5 +1,7 @@ ; RUN: llc -mtriple=x86_64-unknown-linux-gnu %s -o %t -filetype=obj -; RUN: llvm-dwarfdump -debug-info %t | FileCheck %s +; RUN: llvm-dwarfdump -debug-info %t | FileCheck %s --check-prefix LINUX +; RUN: llc -mtriple=x86_64-apple-macosx %s -o %t -filetype=obj +; RUN: llvm-dwarfdump -debug-info %t | FileCheck %s --check-prefix DARWIN ; ; Test the DW_AT_producer DWARF attribute. ; When producer and flags are both given in DIComileUnit, set DW_AT_producer @@ -16,8 +18,10 @@ ; return 0; ; } -; CHECK: DW_AT_producer -; CHECK-SAME: "clang++ -g -grecord-gcc-switches test.cc -S -emit-llvm -o -" +; LINUX: DW_AT_producer{{.*}}("clang++ -g -grecord-gcc-switches test.cc -S -emit-llvm -o -") +; DARWIN: DW_AT_producer{{.*}}("clang++") +; DARWIN: DW_AT_APPLE_flags{{.*}}("-g -grecord-gcc-switches test.cc -S -emit-llvm -o -") + target triple = "x86_64-unknown-linux-gnu" define i32 @main() !dbg !6 {