From d942a82a076d35130376fa786adfc933c7db1c89 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Mon, 1 Mar 2021 10:55:19 -0800 Subject: [PATCH] Make -f[no-]split-dwarf-inlining CC1 default align with driver default (no inlining) This makes CC1 and driver defaults consistent. In addition, for more common cases (-g is specified without -gsplit-dwarf), users will not see -fno-split-dwarf-inlining in CC1 options. Verified that the below is still true: * `clang -g` => `splitDebugInlining: false` in DICompileUnit * `clang -g -gsplit-dwarf` => `splitDebugInlining: false` in DICompileUnit * `clang -g -gsplit-dwarf -fsplit-dwarf-inlining` => no `splitDebugInlining: false` Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D97706 --- clang/include/clang/Driver/Options.td | 6 +++--- clang/lib/Driver/ToolChains/Clang.cpp | 4 ++-- clang/test/CodeGen/split-debug-inlining.c | 4 ++-- clang/test/Driver/split-debug.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 75c4eff..20dcac5 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2669,9 +2669,9 @@ defm debug_ranges_base_address : BoolFOption<"debug-ranges-base-address", PosFlag, NegFlag>; defm split_dwarf_inlining : BoolFOption<"split-dwarf-inlining", - CodeGenOpts<"SplitDwarfInlining">, DefaultTrue, - NegFlag, - PosFlag, DefaultFalse, + NegFlag, + PosFlag>; def fdebug_default_version: Joined<["-"], "fdebug-default-version=">, Group, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 95e7c64..df2b207 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3979,8 +3979,8 @@ static void renderDebugOptions(const ToolChain &TC, const Driver &D, } } - if (T.isOSBinFormatELF() && !SplitDWARFInlining) - CmdArgs.push_back("-fno-split-dwarf-inlining"); + if (T.isOSBinFormatELF() && SplitDWARFInlining) + CmdArgs.push_back("-fsplit-dwarf-inlining"); // After we've dealt with all combinations of things that could // make DebugInfoKind be other than None or DebugLineTablesOnly, diff --git a/clang/test/CodeGen/split-debug-inlining.c b/clang/test/CodeGen/split-debug-inlining.c index 4a306d4..4730891 100644 --- a/clang/test/CodeGen/split-debug-inlining.c +++ b/clang/test/CodeGen/split-debug-inlining.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -debug-info-kind=limited -fno-split-dwarf-inlining -S -emit-llvm -o - %s | FileCheck %s -// RUN: %clang_cc1 -debug-info-kind=limited -S -emit-llvm -o - %s | FileCheck --check-prefix=ABSENT %s +// RUN: %clang_cc1 -debug-info-kind=limited -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -debug-info-kind=limited -fsplit-dwarf-inlining -S -emit-llvm -o - %s | FileCheck --check-prefix=ABSENT %s void f(void) {} // Verify that disabling split debug inlining info is propagated to the debug // info metadata. diff --git a/clang/test/Driver/split-debug.c b/clang/test/Driver/split-debug.c index d451157..0017383 100644 --- a/clang/test/Driver/split-debug.c +++ b/clang/test/Driver/split-debug.c @@ -7,8 +7,8 @@ /// -gsplit-dwarf=split is equivalent to -gsplit-dwarf. // RUN: %clang -### -c -target x86_64 -gsplit-dwarf=split -g %s 2>&1 | FileCheck %s --check-prefixes=NOINLINE,SPLIT -// INLINE-NOT: "-fno-split-dwarf-inlining" -// NOINLINE: "-fno-split-dwarf-inlining" +// INLINE: "-fsplit-dwarf-inlining" +// NOINLINE-NOT: "-fsplit-dwarf-inlining" // SPLIT: "-debug-info-kind=limited" // SPLIT-SAME: "-ggnu-pubnames" // SPLIT-SAME: "-split-dwarf-file" "split-debug.dwo" "-split-dwarf-output" "split-debug.dwo" -- 2.7.4