diff --git a/clang/lib/Driver/ToolChains/AIX.h b/clang/lib/Driver/ToolChains/AIX.h --- a/clang/lib/Driver/ToolChains/AIX.h +++ b/clang/lib/Driver/ToolChains/AIX.h @@ -88,7 +88,7 @@ unsigned GetDefaultDwarfVersion() const override { return 3; } llvm::DebuggerKind getDefaultDebuggerTuning() const override { - return llvm::DebuggerKind::DBX; + return llvm::DebuggerKind::Default; } protected: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4259,13 +4259,17 @@ DebugInfoKind == codegenoptions::DebugDirectivesOnly) DebugInfoKind = codegenoptions::NoDebugInfo; + const bool UseDBX = + DebuggerTuning == llvm::DebuggerKind::DBX || + (DebuggerTuning == llvm::DebuggerKind::Default && T.isOSAIX()); // strict DWARF is set to false by default. But for DBX, we need it to be set // as true by default. if (const Arg *A = Args.getLastArg(options::OPT_gstrict_dwarf)) (void)checkDebugInfoOption(A, Args, D, TC); if (Args.hasFlag(options::OPT_gstrict_dwarf, options::OPT_gno_strict_dwarf, - DebuggerTuning == llvm::DebuggerKind::DBX)) + UseDBX)) { CmdArgs.push_back("-gstrict-dwarf"); + } // And we handle flag -grecord-gcc-switches later with DWARFDebugFlags. Args.ClaimAllArgs(options::OPT_g_flags_Group); @@ -4280,8 +4284,7 @@ (void)checkDebugInfoOption(A, Args, D, TC); if (!Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info, !EmitCodeView && - (DebuggerTuning != llvm::DebuggerKind::SCE && - DebuggerTuning != llvm::DebuggerKind::DBX))) + (DebuggerTuning != llvm::DebuggerKind::SCE && !UseDBX))) CmdArgs.push_back("-gno-column-info"); // FIXME: Move backend command line options to the module. diff --git a/clang/test/Driver/debug-options.c b/clang/test/Driver/debug-options.c --- a/clang/test/Driver/debug-options.c +++ b/clang/test/Driver/debug-options.c @@ -116,17 +116,25 @@ // RUN: %clang -### %s -g -target x86_64-scei-ps5 2>&1 \ // RUN: | FileCheck -check-prefix=LDGARANGE %s -// On the AIX, -g defaults to -gdbx and limited debug info. +// On the AIX, -g defaults to limited debug info. // RUN: %clang -### -c -g %s -target powerpc-ibm-aix-xcoff 2>&1 \ -// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DBX %s +// RUN: | FileCheck -check-prefix=G_LIMITED %s // RUN: %clang -### -c -g %s -target powerpc64-ibm-aix-xcoff 2>&1 \ -// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DBX %s +// RUN: | FileCheck -check-prefix=G_LIMITED %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc-ibm-aix-xcoff 2>&1 \ +// RUN: | FileCheck -check-prefixes=G_LIMITED,G_DBX %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc64-ibm-aix-xcoff 2>&1 \ +// RUN: | FileCheck -check-prefixes=G_LIMITED,G_DBX %s // For DBX, -g defaults to -gstrict-dwarf. // RUN: %clang -### -c -g %s -target powerpc-ibm-aix-xcoff 2>&1 \ // RUN: | FileCheck -check-prefix=STRICT %s // RUN: %clang -### -c -g %s -target powerpc64-ibm-aix-xcoff 2>&1 \ // RUN: | FileCheck -check-prefix=STRICT %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc-ibm-aix-xcoff 2>&1 \ +// RUN: | FileCheck -check-prefix=STRICT %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc64-ibm-aix-xcoff 2>&1 \ +// RUN: | FileCheck -check-prefix=STRICT %s // RUN: %clang -### -c -g -gno-strict-dwarf %s -target powerpc-ibm-aix-xcoff \ // RUN: 2>&1 | FileCheck -check-prefix=NOSTRICT %s // RUN: %clang -### -c -g %s -target x86_64-linux-gnu 2>&1 \ @@ -143,6 +151,10 @@ // RUN: | FileCheck -check-prefix=CI %s // RUN: %clang -### -c -g %s -target powerpc64-ibm-aix-xcoff -gcolumn-info \ // RUN: 2>&1 | FileCheck -check-prefix=CI %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc-ibm-aix-xcoff \ +// RUN: -gcolumn-info 2>&1 | FileCheck -check-prefix=CI %s +// RUN: %clang -### -c -g -gdbx %s -target powerpc64-ibm-aix-xcoff \ +// RUN: -gcolumn-info 2>&1 | FileCheck -check-prefix=CI %s // WebAssembly. // WebAssembly should default to DWARF4.