[clang] d9b9621 - Reland D73534: [DebugInfo] Enable the debug entry values feature by default

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Sat Mar 21 20:13:55 PDT 2020


Please include the "Differential Revision" line so that Phab picks up
commits like this and ties them into the review (& also makes it
conveniently clickable to jump from the commit mail to the review)

On Thu, Mar 19, 2020 at 5:58 AM Djordje Todorovic via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

>
> Author: Djordje Todorovic
> Date: 2020-03-19T13:57:30+01:00
> New Revision: d9b962100942c71a4c26debaa716f7ab0c4ea8a1
>
> URL:
> https://github.com/llvm/llvm-project/commit/d9b962100942c71a4c26debaa716f7ab0c4ea8a1
> DIFF:
> https://github.com/llvm/llvm-project/commit/d9b962100942c71a4c26debaa716f7ab0c4ea8a1.diff
>
> LOG: Reland D73534: [DebugInfo] Enable the debug entry values feature by
> default
>
> The issue that was causing the build failures was fixed with the D76164.
>
> Added:
>     llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
>
> Modified:
>     clang/include/clang/Basic/CodeGenOptions.def
>     clang/include/clang/Driver/CC1Options.td
>     clang/lib/CodeGen/BackendUtil.cpp
>     clang/lib/CodeGen/CGDebugInfo.cpp
>     clang/lib/Frontend/CompilerInvocation.cpp
>     clang/test/CodeGen/debug-info-extern-call.c
>     clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
>     lldb/packages/Python/lldbsuite/test/decorators.py
>
> lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Makefile
>     llvm/include/llvm/Target/TargetMachine.h
>     llvm/include/llvm/Target/TargetOptions.h
>     llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>     llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
>     llvm/lib/CodeGen/CommandFlags.cpp
>     llvm/lib/CodeGen/LiveDebugValues.cpp
>     llvm/lib/CodeGen/TargetOptionsImpl.cpp
>     llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
>     llvm/lib/Target/ARM/ARMTargetMachine.cpp
>     llvm/lib/Target/X86/X86TargetMachine.cpp
>     llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
>     llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
>     llvm/test/CodeGen/X86/call-site-info-output.ll
>     llvm/test/DebugInfo/AArch64/dbgcall-site-float-entry-value.ll
>     llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
>     llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovd.mir
>     llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovs.mir
>     llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
>
> llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
>
> llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
>     llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
>     llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
>     llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
>     llvm/test/DebugInfo/MIR/X86/callsite-stack-value.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-reg-shuffle.mir
>     llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
>     llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
>     llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
>     llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
>     llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
>     llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
>     llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
>     llvm/test/DebugInfo/X86/dbg-value-range.ll
>     llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
>     llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
>     llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
>     llvm/test/DebugInfo/X86/loclists-dwp.ll
>     llvm/test/tools/llvm-locstats/locstats.ll
>
> Removed:
>
>
>
>
> ################################################################################
> diff  --git a/clang/include/clang/Basic/CodeGenOptions.def
> b/clang/include/clang/Basic/CodeGenOptions.def
> index 3c8b0eeb47a5..e047054447f3 100644
> --- a/clang/include/clang/Basic/CodeGenOptions.def
> +++ b/clang/include/clang/Basic/CodeGenOptions.def
> @@ -63,7 +63,6 @@ CODEGENOPT(ExperimentalNewPassManager, 1, 0) ///<
> Enables the new, experimental
>  CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the
> new
>                                     ///< pass manager.
>  CODEGENOPT(DisableRedZone    , 1, 0) ///< Set when -mno-red-zone is
> enabled.
> -CODEGENOPT(EnableDebugEntryValues, 1, 0) ///< Emit call site parameter
> dbg info
>  CODEGENOPT(EmitCallSiteInfo, 1, 0) ///< Emit call site info only in the
> case of
>                                     ///< '-g' + 'O>0' level.
>  CODEGENOPT(IndirectTlsSegRefs, 1, 0) ///< Set when
> -mno-tls-direct-seg-refs
>
> diff  --git a/clang/include/clang/Driver/CC1Options.td
> b/clang/include/clang/Driver/CC1Options.td
> index b7a2826d8fcb..cc30893703df 100644
> --- a/clang/include/clang/Driver/CC1Options.td
> +++ b/clang/include/clang/Driver/CC1Options.td
> @@ -388,8 +388,6 @@ def flto_visibility_public_std:
>  def flto_unit: Flag<["-"], "flto-unit">,
>      HelpText<"Emit IR to support LTO unit features (CFI, whole program
> vtable opt)">;
>  def fno_lto_unit: Flag<["-"], "fno-lto-unit">;
> -def femit_debug_entry_values : Flag<["-"], "femit-debug-entry-values">,
> -    HelpText<"Enables debug info about call site parameter's entry
> values">;
>  def fdebug_pass_manager : Flag<["-"], "fdebug-pass-manager">,
>      HelpText<"Prints debug information for the new pass manager">;
>  def fno_debug_pass_manager : Flag<["-"], "fno-debug-pass-manager">,
>
> diff  --git a/clang/lib/CodeGen/BackendUtil.cpp
> b/clang/lib/CodeGen/BackendUtil.cpp
> index 28e4ecc7b4bf..e8f2524a25d5 100644
> --- a/clang/lib/CodeGen/BackendUtil.cpp
> +++ b/clang/lib/CodeGen/BackendUtil.cpp
> @@ -491,7 +491,6 @@ static void initTargetOptions(llvm::TargetOptions
> &Options,
>    Options.DebuggerTuning = CodeGenOpts.getDebuggerTuning();
>    Options.EmitStackSizeSection = CodeGenOpts.StackSizeSection;
>    Options.EmitAddrsig = CodeGenOpts.Addrsig;
> -  Options.EnableDebugEntryValues = CodeGenOpts.EnableDebugEntryValues;
>    Options.ForceDwarfFrameSection = CodeGenOpts.ForceDwarfFrameSection;
>    Options.EmitCallSiteInfo = CodeGenOpts.EmitCallSiteInfo;
>
>
> diff  --git a/clang/lib/CodeGen/CGDebugInfo.cpp
> b/clang/lib/CodeGen/CGDebugInfo.cpp
> index 94dab4c85614..eeb1927177c5 100644
> --- a/clang/lib/CodeGen/CGDebugInfo.cpp
> +++ b/clang/lib/CodeGen/CGDebugInfo.cpp
> @@ -4883,8 +4883,7 @@ llvm::DINode::DIFlags
> CGDebugInfo::getCallSiteRelatedAttrs() const {
>        (CGM.getCodeGenOpts().getDebuggerTuning() ==
> llvm::DebuggerKind::LLDB ||
>         CGM.getCodeGenOpts().getDebuggerTuning() ==
> llvm::DebuggerKind::GDB);
>
> -  if (!SupportsDWARFv4Ext && CGM.getCodeGenOpts().DwarfVersion < 5 &&
> -      !CGM.getCodeGenOpts().EnableDebugEntryValues)
> +  if (!SupportsDWARFv4Ext && CGM.getCodeGenOpts().DwarfVersion < 5)
>      return llvm::DINode::FlagZero;
>
>    return llvm::DINode::FlagAllCallsDescribed;
>
> diff  --git a/clang/lib/Frontend/CompilerInvocation.cpp
> b/clang/lib/Frontend/CompilerInvocation.cpp
> index e2b24f0cfcea..2e432ad9ce14 100644
> --- a/clang/lib/Frontend/CompilerInvocation.cpp
> +++ b/clang/lib/Frontend/CompilerInvocation.cpp
> @@ -788,10 +788,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts,
> ArgList &Args, InputKind IK,
>
>    llvm::Triple T(TargetOpts.Triple);
>    if (Opts.OptimizationLevel > 0 && Opts.hasReducedDebugInfo() &&
> -      llvm::is_contained(DebugEntryValueArchs, T.getArch())) {
> -    Opts.EnableDebugEntryValues =
> Args.hasArg(OPT_femit_debug_entry_values);
> +      llvm::is_contained(DebugEntryValueArchs, T.getArch()))
>      Opts.EmitCallSiteInfo = true;
> -  }
>
>    Opts.DisableO0ImplyOptNone = Args.hasArg(OPT_disable_O0_optnone);
>    Opts.DisableRedZone = Args.hasArg(OPT_disable_red_zone);
>
> diff  --git a/clang/test/CodeGen/debug-info-extern-call.c
> b/clang/test/CodeGen/debug-info-extern-call.c
> index da3764f7359e..072e578b5898 100644
> --- a/clang/test/CodeGen/debug-info-extern-call.c
> +++ b/clang/test/CodeGen/debug-info-extern-call.c
> @@ -1,7 +1,7 @@
>  // When entry values are emitted, expect a subprogram for extern decls so
> that
>  // the dwarf generator can describe call site parameters at extern call
> sites.
>  //
> -// RUN: %clang -Xclang -femit-debug-entry-values -g -O2 -target
> x86_64-none-linux-gnu -S -emit-llvm %s -o - \
> +// RUN: %clang -g -O2 -target x86_64-none-linux-gnu -S -emit-llvm %s -o -
> \
>  // RUN:   | FileCheck %s -check-prefix=DECLS-FOR-EXTERN
>
>  // Similarly, when the debugger tuning is gdb, expect a subprogram for
> extern
>
> diff  --git a/clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
> b/clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
> index 72caf119f869..e64e07cdb748 100644
> --- a/clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
> +++ b/clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
> @@ -15,13 +15,6 @@
>  // RUN: | FileCheck %s -check-prefix=HAS-ATTR \
>  // RUN:     -implicit-check-not=DISubprogram
> -implicit-check-not=DIFlagAllCallsDescribed
>
> -// Supported: DWARF4 + GDB tuning by using '-femit-debug-entry-values'
> -// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple
> x86_64-linux-gnu \
> -// RUN:   %s -o - -O1 -disable-llvm-passes -debugger-tuning=gdb \
> -// RUN:   -debug-info-kind=standalone -dwarf-version=4 \
> -// RUN: | FileCheck %s -check-prefix=HAS-ATTR \
> -// RUN:     -implicit-check-not=DIFlagAllCallsDescribed
> -
>  // Note: DIFlagAllCallsDescribed may have been enabled prematurely when
> tuning
>  // for GDB under -gdwarf-4 in https://reviews.llvm.org/D69743. It's
> possible
>  // this should have been 'Unsupported' until entry values emission was
> enabled
> @@ -34,15 +27,15 @@
>  // RUN: | FileCheck %s -check-prefix=HAS-ATTR \
>  // RUN:     -implicit-check-not=DIFlagAllCallsDescribed
>
> -// Supported: DWARF4 + LLDB tuning by using '-femit-debug-entry-values'
> -// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple
> x86_64-linux-gnu \
> +// Supported: DWARF4 + LLDB, -O1
> +// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu \
>  // RUN:   %s -o - -O1 -disable-llvm-passes -debugger-tuning=lldb \
>  // RUN:   -debug-info-kind=standalone -dwarf-version=4 \
>  // RUN: | FileCheck %s -check-prefix=HAS-ATTR \
>  // RUN:     -implicit-check-not=DIFlagAllCallsDescribed
>
> -// Unsupported: -O0 + '-femit-debug-entry-values'
> -// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple
> x86_64-linux-gnu \
> +// Unsupported: -O0
> +// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu \
>  // RUN:   %s -o - -O0 -disable-llvm-passes -debugger-tuning=gdb \
>  // RUN:   -debug-info-kind=standalone -dwarf-version=4 \
>  // RUN: | FileCheck %s -check-prefix=NO-ATTR
>
> diff  --git a/lldb/packages/Python/lldbsuite/test/decorators.py
> b/lldb/packages/Python/lldbsuite/test/decorators.py
> index 32ae8ee9b000..cc28ae901634 100644
> --- a/lldb/packages/Python/lldbsuite/test/decorators.py
> +++ b/lldb/packages/Python/lldbsuite/test/decorators.py
> @@ -702,7 +702,7 @@ def is_compiler_clang_with_call_site_info(self):
>
>          f = tempfile.NamedTemporaryFile()
>          cmd = "echo 'int main() {}' | " \
> -              "%s -g -glldb -O1 -Xclang -femit-debug-entry-values -S
> -emit-llvm -x c -o %s -" % (compiler_path, f.name)
> +              "%s -g -glldb -O1 -S -emit-llvm -x c -o %s -" %
> (compiler_path, f.name)
>          if os.popen(cmd).close() is not None:
>              return "Compiler can't compile with call site info enabled"
>
>
> diff  --git
> a/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Makefile
> b/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Makefile
> index db8fa57abb91..ab505a684126 100644
> ---
> a/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Makefile
> +++
> b/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Makefile
> @@ -1,3 +1,3 @@
>  CXX_SOURCES := main.cpp
> -CXXFLAGS_EXTRAS := -O2 -glldb -Xclang -femit-debug-entry-values
> +CXXFLAGS_EXTRAS := -O2 -glldb
>  include Makefile.rules
>
> diff  --git a/llvm/include/llvm/Target/TargetMachine.h
> b/llvm/include/llvm/Target/TargetMachine.h
> index fdf1313e5491..c2e14d14d351 100644
> --- a/llvm/include/llvm/Target/TargetMachine.h
> +++ b/llvm/include/llvm/Target/TargetMachine.h
> @@ -237,6 +237,9 @@ class TargetMachine {
>    void setSupportsDefaultOutlining(bool Enable) {
>      Options.SupportsDefaultOutlining = Enable;
>    }
> +  void setSupportsDebugEntryValues(bool Enable) {
> +    Options.SupportsDebugEntryValues = Enable;
> +  }
>
>    bool shouldPrintMachineCode() const { return Options.PrintMachineCode; }
>
>
> diff  --git a/llvm/include/llvm/Target/TargetOptions.h
> b/llvm/include/llvm/Target/TargetOptions.h
> index 9378e290bed1..7282040a352f 100644
> --- a/llvm/include/llvm/Target/TargetOptions.h
> +++ b/llvm/include/llvm/Target/TargetOptions.h
> @@ -134,8 +134,8 @@ namespace llvm {
>            EmulatedTLS(false), ExplicitEmulatedTLS(false),
> EnableIPRA(false),
>            EmitStackSizeSection(false), EnableMachineOutliner(false),
>            SupportsDefaultOutlining(false), EmitAddrsig(false),
> -          EmitCallSiteInfo(false), EnableDebugEntryValues(false),
> -          ForceDwarfFrameSection(false) {}
> +          EmitCallSiteInfo(false), SupportsDebugEntryValues(false),
> +          EnableDebugEntryValues(false), ForceDwarfFrameSection(false) {}
>
>      /// PrintMachineCode - This flag is enabled when the
> -print-machineinstrs
>      /// option is specified on the command line, and should enable
> debugging
> @@ -286,8 +286,16 @@ namespace llvm {
>      /// info, and it is restricted only to optimized code. This can be
> used for
>      /// something else, so that should be controlled in the frontend.
>      unsigned EmitCallSiteInfo : 1;
> -    /// Emit debug info about parameter's entry values.
> -    unsigned EnableDebugEntryValues : 1;
> +    /// Set if the target supports the debug entry values by default.
> +    unsigned SupportsDebugEntryValues : 1;
> +    /// When set to true, the EnableDebugEntryValues option forces
> production
> +    /// of debug entry values even if the target does not officially
> support
> +    /// it. Useful for testing purposes only. This flag should never be
> checked
> +    /// directly, always use \ref ShouldEmitDebugEntryValues instead.
> +     unsigned EnableDebugEntryValues : 1;
> +    /// NOTE: There are targets that still do not support the debug entry
> values
> +    /// production.
> +    bool ShouldEmitDebugEntryValues() const;
>
>      /// Emit DWARF debug frame section.
>      unsigned ForceDwarfFrameSection : 1;
>
> diff  --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> index 7efeb1a3736a..7b469d496b70 100644
> --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> @@ -95,6 +95,10 @@ static cl::opt<bool> UseDwarfRangesBaseAddressSpecifier(
>      "use-dwarf-ranges-base-address-specifier", cl::Hidden,
>      cl::desc("Use base address specifiers in debug_ranges"),
> cl::init(false));
>
> +static cl::opt<bool> EmitDwarfDebugEntryValues(
> +    "emit-debug-entry-values", cl::Hidden,
> +    cl::desc("Emit the debug entry values"), cl::init(false));
> +
>  static cl::opt<bool> GenerateARangeSection("generate-arange-section",
>                                             cl::Hidden,
>                                             cl::desc("Generate dwarf
> aranges"),
> @@ -419,6 +423,12 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
>    // a monolithic string offsets table without any header.
>    UseSegmentedStringOffsetsTable = DwarfVersion >= 5;
>
> +  // Emit call-site-param debug info for GDB and LLDB, if the target
> supports
> +  // the debug entry values feature. It can also be enabled explicitly.
> +  EmitDebugEntryValues = (Asm->TM.Options.ShouldEmitDebugEntryValues() &&
> +                          (tuneForGDB() || tuneForLLDB())) ||
> +                         EmitDwarfDebugEntryValues;
> +
>    Asm->OutStreamer->getContext().setDwarfVersion(DwarfVersion);
>  }
>
> @@ -886,9 +896,8 @@ void DwarfDebug::constructCallSiteEntryDIEs(const
> DISubprogram &SP,
>        DIE &CallSiteDIE = CU.constructCallSiteEntryDIE(ScopeDIE, CalleeDIE,
>                                                        IsTail, PCAddr,
> CallReg);
>
> -      // GDB and LLDB support call site parameter debug info.
> -      if (Asm->TM.Options.EnableDebugEntryValues &&
> -          (tuneForGDB() || tuneForLLDB())) {
> +      // Optionally emit call-site-param debug info.
> +      if (emitDebugEntryValues()) {
>          ParamSet Params;
>          // Try to interpret values of call site parameters.
>          collectCallSiteParameters(&MI, Params);
>
> diff  --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> index a44960589d89..882fc739d792 100644
> --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> @@ -386,6 +386,11 @@ class DwarfDebug : public DebugHandlerBase {
>    /// a monolithic sequence of string offsets.
>    bool UseSegmentedStringOffsetsTable;
>
> +  /// Enable production of call site parameters needed to print the debug
> entry
> +  /// values. Useful for testing purposes when a debugger does not
> support the
> +  /// feature yet.
> +  bool EmitDebugEntryValues;
> +
>    /// Separated Dwarf Variables
>    /// In general these will all be for bits that are left in the
>    /// original object file, rather than things that are meant
> @@ -708,6 +713,10 @@ class DwarfDebug : public DebugHandlerBase {
>      return UseSegmentedStringOffsetsTable;
>    }
>
> +  bool emitDebugEntryValues() const {
> +    return EmitDebugEntryValues;
> +  }
> +
>    bool shareAcrossDWOCUs() const;
>
>    /// Returns the Dwarf Version.
>
> diff  --git a/llvm/lib/CodeGen/CommandFlags.cpp
> b/llvm/lib/CodeGen/CommandFlags.cpp
> index 7acb84df582f..d5dc49a91177 100644
> --- a/llvm/lib/CodeGen/CommandFlags.cpp
> +++ b/llvm/lib/CodeGen/CommandFlags.cpp
> @@ -380,7 +380,7 @@ codegen::RegisterCodeGenFlags::RegisterCodeGenFlags() {
>
>    static cl::opt<bool> EnableDebugEntryValues(
>        "debug-entry-values",
> -      cl::desc("Emit debug info about parameter's entry values"),
> +      cl::desc("Enable debug info for the debug entry values."),
>        cl::init(false));
>    CGBINDOPT(EnableDebugEntryValues);
>
>
> diff  --git a/llvm/lib/CodeGen/LiveDebugValues.cpp
> b/llvm/lib/CodeGen/LiveDebugValues.cpp
> index 94c5cc58ac1e..a013c419b7c7 100644
> --- a/llvm/lib/CodeGen/LiveDebugValues.cpp
> +++ b/llvm/lib/CodeGen/LiveDebugValues.cpp
> @@ -1125,7 +1125,7 @@ void LiveDebugValues::transferRegisterDef(
>
>    if (auto *TPC = getAnalysisIfAvailable<TargetPassConfig>()) {
>      auto &TM = TPC->getTM<TargetMachine>();
> -    if (TM.Options.EnableDebugEntryValues)
> +    if (TM.Options.ShouldEmitDebugEntryValues())
>        emitEntryValues(MI, OpenRanges, VarLocIDs, Transfers, KillSet);
>    }
>  }
> @@ -1630,7 +1630,7 @@ void LiveDebugValues::recordEntryValue(const
> MachineInstr &MI,
>                                         VarLocMap &VarLocIDs) {
>    if (auto *TPC = getAnalysisIfAvailable<TargetPassConfig>()) {
>      auto &TM = TPC->getTM<TargetMachine>();
> -    if (!TM.Options.EnableDebugEntryValues)
> +    if (!TM.Options.ShouldEmitDebugEntryValues())
>        return;
>    }
>
>
> diff  --git a/llvm/lib/CodeGen/TargetOptionsImpl.cpp
> b/llvm/lib/CodeGen/TargetOptionsImpl.cpp
> index d794a261ecb2..4866d4c171c0 100644
> --- a/llvm/lib/CodeGen/TargetOptionsImpl.cpp
> +++ b/llvm/lib/CodeGen/TargetOptionsImpl.cpp
> @@ -45,3 +45,9 @@ bool TargetOptions::DisableFramePointerElim(const
> MachineFunction &MF) const {
>  bool TargetOptions::HonorSignDependentRoundingFPMath() const {
>    return !UnsafeFPMath && HonorSignDependentRoundingFPMathOption;
>  }
> +
> +/// NOTE: There are targets that still do not support the debug entry
> values
> +/// production.
> +bool TargetOptions::ShouldEmitDebugEntryValues() const {
> +  return SupportsDebugEntryValues || EnableDebugEntryValues;
> +}
>
> diff  --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
> b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
> index a5676d286ebe..62ae04a07808 100644
> --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
> +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
> @@ -309,6 +309,9 @@ AArch64TargetMachine::AArch64TargetMachine(const
> Target &T, const Triple &TT,
>
>    // AArch64 supports default outlining behaviour.
>    setSupportsDefaultOutlining(true);
> +
> +  // AArch64 supports the debug entry values.
> +  setSupportsDebugEntryValues(true);
>  }
>
>  AArch64TargetMachine::~AArch64TargetMachine() = default;
>
> diff  --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
> b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
> index 84876eda33a6..63aa65267ef2 100644
> --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
> +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
> @@ -243,6 +243,9 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const
> Target &T, const Triple &TT,
>      this->Options.NoTrapAfterNoreturn = true;
>    }
>
> +  // ARM supports the debug entry values.
> +  setSupportsDebugEntryValues(true);
> +
>    initAsmInfo();
>  }
>
>
> diff  --git a/llvm/lib/Target/X86/X86TargetMachine.cpp
> b/llvm/lib/Target/X86/X86TargetMachine.cpp
> index 22b4e2805a5e..0cfa7bb04771 100644
> --- a/llvm/lib/Target/X86/X86TargetMachine.cpp
> +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp
> @@ -232,6 +232,9 @@ X86TargetMachine::X86TargetMachine(const Target &T,
> const Triple &TT,
>
>    setMachineOutliner(true);
>
> +  // x86 supports the debug entry values.
> +  setSupportsDebugEntryValues(true);
> +
>    initAsmInfo();
>  }
>
>
> diff  --git a/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
> b/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
> index fec542223fc9..e4100543d3c7 100644
> --- a/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
> +++ b/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
> @@ -1,3 +1,5 @@
> +# We do not support the call site info for the target now, so we use the
> experimental option (-emit-call-site-info -debug-entry-values).
> +
>  # RUN: llc -emit-call-site-info -debug-entry-values -run-pass=none
> -verify-machineinstrs -o - %s | FileCheck %s
>
>  # Verify that it is possible to read and write MIR where a callSites entry
>
> diff  --git a/llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
> b/llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
> index 2472aa707e16..d5bd82c71080 100644
> --- a/llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
> +++ b/llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
> @@ -1,5 +1,5 @@
> -# RUN: not llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck
> %s
> -# CHECK: Call site info provided but not used
> +# RUN: llc -emit-call-site-info -mtriple=x86_64-- -run-pass none %s -o -
> 2>&1 | FileCheck %s
> +# CHECK-NOT: Call site info provided but not used
>  --- |
>    define dso_local i32 @baa(i32 %a) local_unnamed_addr {
>    entry:
>
> diff  --git a/llvm/test/CodeGen/X86/call-site-info-output.ll
> b/llvm/test/CodeGen/X86/call-site-info-output.ll
> index a0438f0c2b98..0686f184b526 100644
> --- a/llvm/test/CodeGen/X86/call-site-info-output.ll
> +++ b/llvm/test/CodeGen/X86/call-site-info-output.ll
> @@ -1,6 +1,6 @@
>  ; Test call site info MIR printer and parser.Parser assertions and machine
>  ; verifier will check the rest;
> -; RUN: llc -emit-call-site-info -debug-entry-values %s
> -stop-before=finalize-isel -o %t.mir
> +; RUN: llc -emit-call-site-info %s -stop-before=finalize-isel -o %t.mir
>  ; RUN: cat %t.mir | FileCheck %s
>  ; CHECK: name: fn2
>  ; CHECK: callSites:
> @@ -10,7 +10,7 @@
>  ; CHECK-NEXT:   arg: 0, reg: '$edi'
>  ; CHECK-NEXT:   arg: 1, reg: '$esi'
>  ; CHECK-NEXT:   arg: 2, reg: '$edx'
> -; RUN: llc -emit-call-site-info -debug-entry-values %t.mir
> -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=PARSER
> +; RUN: llc -emit-call-site-info %t.mir -run-pass=finalize-isel -o -|
> FileCheck %s --check-prefix=PARSER
>  ; Verify that we are able to parse output mir and that we are getting the
> same result.
>  ; PARSER: name: fn2
>  ; PARSER: callSites:
>
> diff  --git
> a/llvm/test/DebugInfo/AArch64/dbgcall-site-float-entry-value.ll
> b/llvm/test/DebugInfo/AArch64/dbgcall-site-float-entry-value.ll
> index a925cd0c1452..3b91d17dc628 100644
> --- a/llvm/test/DebugInfo/AArch64/dbgcall-site-float-entry-value.ll
> +++ b/llvm/test/DebugInfo/AArch64/dbgcall-site-float-entry-value.ll
> @@ -1,4 +1,4 @@
> -; RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info
> -debug-entry-values -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
> +; RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -filetype=obj
> -o - %s | llvm-dwarfdump - | FileCheck %s
>
>  ; Based on the following C reproducer:
>  ;
>
> diff  --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
> b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
> index ed2a7d903885..e3ee2cac4fa9 100644
> --- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
> +++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-after=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - |
> FileCheck %s
> +# RUN: llc -emit-call-site-info -start-after=livedebugvalues
> -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
>
>  # Based on the following C reproducer:
>  #
>
> diff  --git a/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovd.mir
> b/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovd.mir
> index bd42c229d29c..8f7f789eb8fb 100644
> --- a/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovd.mir
> +++ b/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovd.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -O1 -emit-call-site-info -debug-entry-values -filetype=obj
> -mtriple thumbv7em-apple-unknown-macho -start-after=machineverifier %s -o
> %t.o
> +# RUN: llc -O1 -emit-call-site-info -filetype=obj -mtriple
> thumbv7em-apple-unknown-macho -start-after=machineverifier %s -o %t.o
>  # RUN: llvm-dwarfdump %t.o | FileCheck %s
>
>  # Crash test, reduced from:
>
> diff  --git a/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovs.mir
> b/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovs.mir
> index 2cf7e4d1c87f..e3f1031796a0 100644
> --- a/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovs.mir
> +++ b/llvm/test/DebugInfo/MIR/ARM/call-site-info-vmovs.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -O1 -emit-call-site-info -debug-entry-values -filetype=obj
> -mtriple thumbv7em-apple-unknown-macho -start-after=machineverifier %s -o
> %t.o
> +# RUN: llc -O1 -emit-call-site-info -filetype=obj -mtriple
> thumbv7em-apple-unknown-macho -start-after=machineverifier %s -o %t.o
>  # RUN: llvm-dwarfdump %t.o | FileCheck %s
>
>  # Crash test, reduced from:
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
> b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
> index 5b84d9e9627f..b25b1c90d634 100644
> --- a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
> +++ b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -o - %s | FileCheck %s
> +# RUN: llc -run-pass=livedebugvalues -o - %s | FileCheck %s
>
>  # Based on the following C reproducer:
>  #
> @@ -106,10 +106,6 @@
>  name:            caller
>  alignment:       4
>  tracksRegLiveness: true
> -callSites:
> -  - { bb: 0, offset: 6 }
> -  - { bb: 0, offset: 9, fwdArgRegs:
> -      - { arg: 0, reg: '$r0' } }
>  body:             |
>    bb.0:
>      liveins: $lr
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
> b/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
> index 3ae23d4189bf..9baa815a0458 100644
> ---
> a/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
> +++
> b/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
> @@ -1,4 +1,6 @@
> -# RUN: llc -mtriple hexagon -emit-call-site-info -debug-entry-values
> -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - |
> FileCheck %s
> +# We do not support the call site info for the target now, so we use the
> experimental option (-emit-call-site-info -debug-entry-values).
> +
> +# RUN: llc -emit-call-site-info -debug-entry-values -mtriple hexagon
> -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - |
> FileCheck %s
>
>  # Based on the following C reproducer:
>  #
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
> b/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
> index 8bb0b3202acd..2ed3672c2ec3 100644
> ---
> a/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
> +++
> b/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
> @@ -1,3 +1,5 @@
> +# We do not support the call site info for the target now, so we use the
> experimental option (-emit-call-site-info -debug-entry-values).
> +
>  # RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -o - %s | FileCheck %s
>
>  # Verify that the entry values for the input parameters are inserted
> after the
>
> diff  --git a/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
> b/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
> index 3cf41467f7f9..f173c9d780fa 100644
> --- a/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
> +++ b/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
> @@ -1,3 +1,5 @@
> +# We do not support the call site info for the target now, so we use the
> experimental option (-emit-call-site-info -debug-entry-values).
> +
>  # RUN: llc -emit-call-site-info -debug-entry-values
> -start-after=livedebugvalues -o - %s | FileCheck %s
>
>  # This test would previously trigger an assertion when trying to describe
> the
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
> b/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
> index 4e5a07321d42..f7f74b628d16 100644
> --- a/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-before=livedebugvalues -mtriple=x86_64-apple-darwin -o %t %s
> -filetype=obj
> +# RUN: llc -start-before=livedebugvalues -mtriple=x86_64-apple-darwin -o
> %t %s -filetype=obj
>  # RUN: llvm-dwarfdump %t | FileCheck %s
>  #
>  # int global;
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
> b/llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
> index 891fbb60b36e..63d03050918f 100644
> --- a/llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
> @@ -1,17 +1,21 @@
>  # Test the call site encoding in DWARF5 vs GNU extensions.
>  #
> -# RUN: llc -dwarf-version 4 -debugger-tune=gdb -emit-call-site-info
> -debug-entry-values -filetype=obj \
> +# RUN: llc -emit-call-site-info -dwarf-version 4 -debugger-tune=gdb
> -filetype=obj \
>  # RUN:     -mtriple=x86_64-unknown-unknown -start-after=machineverifier
> -o - %s  \
>  # RUN:     | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
>  #
> -# RUN: llc -dwarf-version 5 -debugger-tune=lldb -emit-call-site-info
> -debug-entry-values -filetype=obj \
> +# RUN: llc -emit-call-site-info -dwarf-version 5 -debugger-tune=lldb
> -filetype=obj \
>  # RUN:     -mtriple=x86_64-unknown-unknown -start-after=machineverifier
> -o - %s   \
>  # RUN:     | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
>  #
> -# RUN: llc -dwarf-version 5 -emit-call-site-info -debug-entry-values
> -filetype=obj \
> +# RUN: llc -emit-call-site-info -dwarf-version 5 -filetype=obj \
>  # RUN:     -mtriple=x86_64-unknown-unknown -start-after=machineverifier
> -o - %s   \
>  # RUN:     | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
>  #
> +# RUN: llc -emit-call-site-info -dwarf-version 5 -filetype=obj
> -debugger-tune=sce \
> +# RUN:     -emit-debug-entry-values -debug-entry-values
> -mtriple=x86_64-unknown-unknown \
> +# RUN:     -start-after=machineverifier -o - %s | llvm-dwarfdump - |
> FileCheck %s -check-prefixes=CHECK-DWARF5
> +#
>  # This is based on the following reproducer:
>  #
>  # extern void fn();
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/callsite-stack-value.mir
> b/llvm/test/DebugInfo/MIR/X86/callsite-stack-value.mir
> index 6d69f0630202..5b9ecf08150b 100644
> --- a/llvm/test/DebugInfo/MIR/X86/callsite-stack-value.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/callsite-stack-value.mir
> @@ -1,5 +1,5 @@
>  # RUN: llc -start-after=livedebugvalues -mtriple=x86_64-apple-darwin -o -
> %s -filetype=obj \
> -# RUN:   -emit-call-site-info -debug-entry-values | llvm-dwarfdump - |
> FileCheck %s -implicit-check-not=call_site_parameter
> +# RUN:   -emit-call-site-info | llvm-dwarfdump - | FileCheck %s
> -implicit-check-not=call_site_parameter
>
>  # CHECK: DW_TAG_formal_parameter
>  # CHECK-NEXT: DW_AT_location
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
> index 01a2b887a60b..347a0ec09bb2 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-after=livedebugvalues -filetype=obj %s -o -| llvm-dwarfdump -|
> FileCheck %s
> +# RUN: llc -emit-call-site-info -start-after=livedebugvalues
> -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
>
>  # Based on the following reproducer:
>  #
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
> index d6c6b3018462..b142313871eb 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -|
> FileCheck %s
> +# RUN: llc -emit-call-site-info -start-after=machineverifier
> -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
>  #
>  # CHECK:        DW_TAG_GNU_call_site
>  # CHECK-NEXT:     DW_AT_abstract_origin {{.*}} "foo"
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
> index 4d88fa9aab74..79e40b65c420 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -|
> FileCheck %s
> +# RUN: llc -emit-call-site-info -start-after=machineverifier
> -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
>  # CHECK:        DW_TAG_GNU_call_site
>  # CHECK-NEXT:     DW_AT_abstract_origin {{.*}} "foo")
>  # CHECK-NEXT:     DW_AT_low_pc {{.*}}
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe.mir
> index b97785d650c9..f0902bbe41d6 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-before=livedebugvalues -filetype=obj -o - %s \
> +# RUN: llc -emit-call-site-info -start-before=livedebugvalues
> -filetype=obj -o - %s \
>  # RUN:     | llvm-dwarfdump - | FileCheck %s
> --implicit-check-not=DW_TAG_GNU_call_site_parameter
>
>  --- |
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
> index 81af598ba194..73927772ca08 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-before=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - |
> FileCheck %s
> +# RUN: llc -start-before=livedebugvalues -filetype=obj -o - %s |
> llvm-dwarfdump - | FileCheck %s
>
>  # Based on the following C++ code:
>  # struct A { A(A &) {} };
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reg-shuffle.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reg-shuffle.mir
> index 1baf66393c49..27a03193e816 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reg-shuffle.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reg-shuffle.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -start-before=livedebugvalues -filetype=obj -o - %s \
> +# RUN: llc -emit-call-site-info -start-before=livedebugvalues
> -filetype=obj -o - %s \
>  # RUN:     | llvm-dwarfdump - | FileCheck %s
> --implicit-check-not=DW_TAG_GNU_call_site_parameter
>
>  --- |
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
> b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
> index ac97da66a397..c1bdbd0783ac 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -O1 -emit-call-site-info -debug-entry-values
> -start-after=livedebugvalues -filetype=obj %s -o - | llvm-dwarfdump - |
> FileCheck %s
> +# RUN: llc -O1 -emit-call-site-info -start-after=livedebugvalues
> -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
>
>  # Based on the following C reproducer:
>  #
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
> b/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
> index 9346b513cf48..302cce20a15a 100644
> --- a/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -verify-machineinstrs -march=x86-64 -o - %s |
> FileCheck %s
> +# RUN: llc -run-pass=livedebugvalues -verify-machineinstrs -march=x86-64
> -o - %s | FileCheck %s
>  #
>  #extern void fn2(int);
>  #
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
> b/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
> index 2a78919afd43..c5ca4f1b2a14 100644
> --- a/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
> @@ -2,8 +2,8 @@
>  # When the debugger tuning is set to gdb, use GNU opcodes.
>  # For lldb, use the standard DWARF5 opcodes.
>
> -# RUN: llc -emit-call-site-info -debug-entry-values -debugger-tune=gdb
> -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier
> -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
> -# RUN: llc -emit-call-site-info -debug-entry-values -debugger-tune=lldb
> -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier
> -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
> +# RUN: llc -emit-call-site-info -debugger-tune=gdb -filetype=obj
> -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s |
> llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
> +# RUN: llc -emit-call-site-info -debugger-tune=lldb -filetype=obj
> -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s |
> llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
>  #
>  # extern void foo(int *a, int b, int c, int d, int e, int f);
>  # extern int getVal();
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
> b/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
> index 541a2155578e..0dd63ae98009 100644
> --- a/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
> +# RUN: llc -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
>  #
>  #extern void fn1 (int, int, int);
>  #
> @@ -85,11 +85,6 @@
>  ---
>  name:            fn2
>  alignment:       16
> -callSites:
> -  - { bb: 0, offset: 14, fwdArgRegs:
> -      - { arg: 0, reg: '$edi' }
> -      - { arg: 1, reg: '$esi' }
> -      - { arg: 2, reg: '$edx' } }
>  body:             |
>    bb.0.entry:
>      liveins: $edi, $esi, $rbx
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
> b/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
> index 042d76058a22..fc7bd93d0223 100644
> --- a/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
> +# RUN: llc -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
>  #
>  # The test case was artificially adjusted, in order to make proper
> diamond basic
>  # block structure relevant to the debug entry values propagation.
>
> diff  --git
> a/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
> b/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
> index c5af863954bf..34f80f5ca2a3 100644
> --- a/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -emit-call-site-info -debug-entry-values
> -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
> +# RUN: llc -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
>  #
>  #extern void fn1 (int, int, int);
>  #__attribute__((noinline))
> @@ -110,15 +110,6 @@
>  ---
>  name:            fn2
>  alignment:       16
> -callSites:
> -  - { bb: 0, offset: 20, fwdArgRegs:
> -      - { arg: 0, reg: '$edi' }
> -      - { arg: 1, reg: '$esi' }
> -      - { arg: 2, reg: '$edx' } }
> -  - { bb: 3, offset: 2, fwdArgRegs:
> -      - { arg: 0, reg: '$edi' }
> -      - { arg: 1, reg: '$esi' }
> -      - { arg: 2, reg: '$edx' } }
>  body:             |
>    bb.0.entry:
>      successors: %bb.1(0x40000000), %bb.2(0x40000000)
>
> diff  --git a/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
> b/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
> index ea9c12b5a192..bfc5c2be127e 100644
> --- a/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
> +++ b/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
> @@ -1,4 +1,4 @@
> -# RUN: llc -mtriple=x86_64-pc-linux -emit-call-site-info
> -debug-entry-values -run-pass=unreachable-mbb-elimination -o - %s |
> FileCheck %s
> +# RUN: llc -emit-call-site-info -mtriple=x86_64-pc-linux
> -run-pass=unreachable-mbb-elimination -o - %s | FileCheck %s
>
>  # Verify that the call site information for the call residing in the
> eliminated
>  # block is removed. This test case would previously trigger an assertion
> when
>
> diff  --git a/llvm/test/DebugInfo/X86/dbg-value-range.ll
> b/llvm/test/DebugInfo/X86/dbg-value-range.ll
> index e0cfe5f15ee9..9159d2aac780 100644
> --- a/llvm/test/DebugInfo/X86/dbg-value-range.ll
> +++ b/llvm/test/DebugInfo/X86/dbg-value-range.ll
> @@ -56,6 +56,6 @@ declare void @llvm.dbg.value(metadata, metadata,
> metadata) nounwind readnone
>  ;CHECK-NEXT:   .quad   [[CLOBBER_OFF]]
>  ;CHECK-NEXT:  .short 1 ## Loc expr size
>  ;CHECK-NEXT:   .byte   85 ## DW_OP_reg
> -;CHECK-NEXT:   .quad   0
> +;CHECK:        .quad  0
>  ;CHECK-NEXT:   .quad   0
>  !24 = !{i32 1, !"Debug Info Version", i32 3}
>
> diff  --git a/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
> b/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
> index 440498a9d8dd..425a6cb38c41 100644
> --- a/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
> +++ b/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
> @@ -9,8 +9,7 @@
>  ; ASM: movl $1, x(%rip)
>  ; ASM: callq clobber
>  ; ASM-NEXT: [[argc_range_end:.Ltmp[0-9]+]]:
> -; Previously LiveDebugValues would claim argc was still in ecx after the
> call.
> -; ASM-NOT: #DEBUG_VALUE: main:argc
> +; ASM: #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $ecx
>
>  ; argc is the first debug location.
>  ; ASM: .Ldebug_loc1:
> @@ -23,7 +22,8 @@
>  ; DWARF: .debug_info contents:
>  ; DWARF:  DW_TAG_formal_parameter
>  ; DWARF-NEXT:    DW_AT_location ({{0x.*}}
> -; DWARF-NEXT:      [0x0000000000000000, 0x0000000000000013): DW_OP_reg2
> RCX)
> +; DWARF-NEXT:    [0x0000000000000000, 0x0000000000000013): DW_OP_reg2 RCX
> +; DWARF-NEXT:    [0x0000000000000013, 0x0000000000000043):
> DW_OP_GNU_entry_value(DW_OP_reg2 RCX), DW_OP_stack_value
>  ; DWARF-NEXT:    DW_AT_name ("argc")
>
>  ; ModuleID = 't.cpp'
>
> diff  --git a/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
> b/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
> index b8cd9574cc63..f12dfa6196c1 100644
> --- a/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
> +++ b/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
> @@ -1,4 +1,4 @@
> -; RUN: llc -O1 -emit-call-site-info -debug-entry-values -filetype=obj -o
> - %s | llvm-dwarfdump - | FileCheck %s
> +; RUN: llc -emit-call-site-info -O1 -filetype=obj -o - %s |
> llvm-dwarfdump - | FileCheck %s
>
>  ; Verify that the 64-bit call site immediates are not truncated.
>  ;
>
> diff  --git a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
> b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
> index 5d37774f55d6..dc8c418117c7 100644
> --- a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
> +++ b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
> @@ -1,4 +1,4 @@
> -; RUN: llc -O3 -emit-call-site-info -debug-entry-values -filetype=obj -o
> - %s | llvm-dwarfdump - | FileCheck %s
> +; RUN: llc -emit-call-site-info -O3 -filetype=obj -o - %s |
> llvm-dwarfdump - | FileCheck %s
>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>  target triple = "x86_64-unknown-linux-gnu"
>
> diff  --git a/llvm/test/DebugInfo/X86/loclists-dwp.ll
> b/llvm/test/DebugInfo/X86/loclists-dwp.ll
> index 91f838876338..a972c8094c5f 100644
> --- a/llvm/test/DebugInfo/X86/loclists-dwp.ll
> +++ b/llvm/test/DebugInfo/X86/loclists-dwp.ll
> @@ -19,10 +19,12 @@
>  ; void b(int i) { asm("" : : : "rdi"); }
>
>  ; CHECK:      DW_AT_location [DW_FORM_sec_offset]   (0x00000000
> -; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000,
> 0x0000000000000006): DW_OP_reg5 RDI)
> +; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000,
> 0x0000000000000006): DW_OP_reg5 RDI
> +; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000001,
> 0x0000000000000002): DW_OP_GNU_entry_value(DW_OP_reg5 RDI),
> DW_OP_stack_value)
>
>  ; CHECK:      DW_AT_location [DW_FORM_sec_offset]   (0x00000000
> -; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000,
> 0x0000000000000000): DW_OP_reg5 RDI)
> +; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000,
> 0x0000000000000000): DW_OP_reg5 RDI
> +; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000001,
> 0x0000000000000001): DW_OP_GNU_entry_value(DW_OP_reg5 RDI),
> DW_OP_stack_value)
>
>  target triple = "x86_64-unknown-linux-gnu"
>
>
> diff  --git a/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
> b/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
> new file mode 100644
> index 000000000000..8ba22b7b6e51
> --- /dev/null
> +++ b/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
> @@ -0,0 +1,88 @@
> +; RUN: llc -O0  -dwarf-version=5 -debugger-tune=lldb -march=x86-64
> -filetype=obj < %s \
> +; RUN:  | llvm-dwarfdump - | FileCheck
> --implicit-check-not=DW_OP_entry_value %s
> +; RUN: llc -O0  -dwarf-version=5 -debugger-tune=gdb -march=x86-64
> -filetype=obj < %s \
> +; RUN:  | llvm-dwarfdump - | FileCheck
> --implicit-check-not=DW_OP_entry_value %s
> +
> +; The call-site-params are created iff corresponding DISubprogram contains
> +; the AllCallsDescribed DIFlag.
> +; CHECK-NOT: DW_TAG_call_site_param
> +
> +; Genarated with:
> +; clang -gdwarf-5 -O0 test.c -S -emit-llvm
> +;
> +; ModuleID = 'test.c'
> +target datalayout =
> "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
> +target triple = "x86_64-unknown-linux-gnu"
> +
> +; Function Attrs: noinline nounwind optnone uwtable
> +define dso_local void @fn1(i32 %x, i32 %y) !dbg !7 {
> +entry:
> +  %x.addr = alloca i32, align 4
> +  %y.addr = alloca i32, align 4
> +  %u = alloca i32, align 4
> +  %a = alloca i32, align 4
> +  store i32 %x, i32* %x.addr, align 4
> +  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !11,
> metadata !DIExpression()), !dbg !12
> +  store i32 %y, i32* %y.addr, align 4
> +  call void @llvm.dbg.declare(metadata i32* %y.addr, metadata !13,
> metadata !DIExpression()), !dbg !14
> +  call void @llvm.dbg.declare(metadata i32* %u, metadata !15, metadata
> !DIExpression()), !dbg !16
> +  %0 = load i32, i32* %x.addr, align 4, !dbg !16
> +  %1 = load i32, i32* %y.addr, align 4, !dbg !16
> +  %add = add nsw i32 %0, %1, !dbg !16
> +  store i32 %add, i32* %u, align 4, !dbg !16
> +  %2 = load i32, i32* %x.addr, align 4, !dbg !17
> +  %cmp = icmp sgt i32 %2, 1, !dbg !17
> +  br i1 %cmp, label %if.then, label %if.else, !dbg !16
> +
> +if.then:                                          ; preds = %entry
> +  %3 = load i32, i32* %u, align 4, !dbg !17
> +  %add1 = add nsw i32 %3, 1, !dbg !17
> +  store i32 %add1, i32* %u, align 4, !dbg !17
> +  br label %if.end, !dbg !17
> +
> +if.else:                                          ; preds = %entry
> +  %4 = load i32, i32* %u, align 4, !dbg !17
> +  %add2 = add nsw i32 %4, 2, !dbg !17
> +  store i32 %add2, i32* %u, align 4, !dbg !17
> +  br label %if.end
> +
> +if.end:                                           ; preds = %if.else,
> %if.then
> +  call void @llvm.dbg.declare(metadata i32* %a, metadata !19, metadata
> !DIExpression()), !dbg !16
> +  store i32 7, i32* %a, align 4, !dbg !16
> +  %5 = load i32, i32* %a, align 4, !dbg !16
> +  call void @fn2(i32 %5), !dbg !16
> +  %6 = load i32, i32* %u, align 4, !dbg !16
> +  %dec = add nsw i32 %6, -1, !dbg !16
> +  store i32 %dec, i32* %u, align 4, !dbg !16
> +  ret void, !dbg !16
> +}
> +
> +; Function Attrs: nounwind readnone speculatable willreturn
> +declare void @llvm.dbg.declare(metadata, metadata, metadata)
> +
> +declare dso_local void @fn2(i32)
> +
> +!llvm.dbg.cu = !{!0}
> +!llvm.module.flags = !{!3, !4, !5}
> +!llvm.ident = !{!6}
> +
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "clang version 11.0.0", isOptimized: false, runtimeVersion: 0,
> emissionKind: FullDebug, enums: !2, splitDebugInlining: false,
> nameTableKind: None)
> +!1 = !DIFile(filename: "test.c", directory: "/")
> +!2 = !{}
> +!3 = !{i32 7, !"Dwarf Version", i32 5}
> +!4 = !{i32 2, !"Debug Info Version", i32 3}
> +!5 = !{i32 1, !"wchar_size", i32 4}
> +!6 = !{!"clang version 11.0.0"}
> +!7 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 5,
> type: !8, scopeLine: 5, flags: DIFlagPrototyped, spFlags:
> DISPFlagDefinition, unit: !0, retainedNodes: !2)
> +!8 = !DISubroutineType(types: !9)
> +!9 = !{null, !10, !10}
> +!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> +!11 = !DILocalVariable(name: "x", arg: 1, scope: !7, file: !1, line: 5,
> type: !10)
> +!12 = !DILocation(line: 5, column: 10, scope: !7)
> +!13 = !DILocalVariable(name: "y", arg: 2, scope: !7, file: !1, line: 5,
> type: !10)
> +!14 = !DILocation(line: 5, column: 17, scope: !7)
> +!15 = !DILocalVariable(name: "u", scope: !7, file: !1, line: 6, type: !10)
> +!16 = !DILocation(line: 6, column: 7, scope: !7)
> +!17 = !DILocation(line: 7, column: 7, scope: !18)
> +!18 = distinct !DILexicalBlock(scope: !7, file: !1, line: 7, column: 7)
> +!19 = !DILocalVariable(name: "a", scope: !7, file: !1, line: 11, type:
> !10)
>
> diff  --git a/llvm/test/tools/llvm-locstats/locstats.ll
> b/llvm/test/tools/llvm-locstats/locstats.ll
> index f16635d2e8e4..fd28679f3ec1 100644
> --- a/llvm/test/tools/llvm-locstats/locstats.ll
> +++ b/llvm/test/tools/llvm-locstats/locstats.ll
> @@ -9,9 +9,9 @@
>  ; LOCSTATS: [10%,20%) 0 0%
>  ; LOCSTATS: [20%,30%) 1 11%
>  ; LOCSTATS: [30%,40%) 0 0%
> -; LOCSTATS: [40%,50%) 1 11%
> -; LOCSTATS: [50%,60%) 1 11%
> -; LOCSTATS: [60%,70%) 1 11%
> +; LOCSTATS: [40%,50%) 0 0%
> +; LOCSTATS: [50%,60%) 0 0%
> +; LOCSTATS: [60%,70%) 3 33%
>  ; LOCSTATS: [70%,80%) 0 0%
>  ; LOCSTATS: [80%,90%) 2 22%
>  ; LOCSTATS: [90%,100%) 1 11%
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200321/2aba7de2/attachment-0001.html>


More information about the cfe-commits mailing list