[clang] d9b9621 - Reland D73534: [DebugInfo] Enable the debug entry values feature by default
David Stenberg via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 23 03:02:55 PDT 2020
Hi!
On Mon, 2020-03-23 at 08:56 +0100, Djordje wrote:
> (+ CCing some debug info folks as well)
>
> Hi David,
>
> OK, I agree, my apologize.
>
> The patch enables the whole feature by default and removes the experimental
> option that has been used during the implementation.
> We tested the code (and the assertions regarding the feature itself) by using
> the experimental option on some large projects, but since the feature became
> that huge (and new patches regarding the feature are coming every day -- which
> is nice), it is impossible to test everything.
When the issue related to D75036 was reported I probably should have reverted
that commit directly when starting to troubleshoot the issue, so that we didn't
have to end up reverting D73534.
Sorry about that!
> The Debug Entry Values implementation grows these days, and new functionalities
> comes in, but it has all been tested with the experimental option, so
> committing this particular patch imposes all the cases developers oversighted
> during the implementation.
>
> My impression is that, before adding new functionalities to the feature, we
> should make sure the D73534 is stable and gets stuck. We should have done it
> before, but I think that is the lesson learned here.
That sounds reasonable I think. For how long should we do that? A week? Two
weeks?
> In general, experimental options are very good up to the some point, but if the
> feature being tested grows a lot, a "breakpoint" should be set up and take care
> the experimental option is removed and the code is well tested on the real
> cases out there, and then moving to the next stage of the implementation.
>
> Besides this, CISCO is using the feature ON by default for some time, and we
> have good experience there. This really improves the debugging user experience
> while debugging the "optimized" code.
>
> Best regards,
> Djordje
Best regards,
David S
> On 22.3.20. 16:30, David Blaikie wrote:
> > Also, this patch was reverted and recommitted several times (more than I
> > think would be ideal) - please include more details in the commit message
> > about what went wrong, what was fixed, what testing was missed in the first
> > place and done in subsequent precommit validation (& is there anything more
> > broadly we could learn from this patches story to avoid this kind of
> > revert/recommit repetition in the future?)
> >
> > On Sat, Mar 21, 2020 at 8:13 PM David Blaikie <dblaikie at gmail.com <mailto:
> > dblaikie at gmail.com>> wrote:
> >
> > 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 <mailto:cfe-commits at lists.llvm.org>> wrote:
> >
> >
> > Author: Djordje Todorovic
> > Date: 2020-03-19T13:57:30+01:00
> > New Revision: d9b962100942c71a4c26debaa716f7ab0c4ea8a1
> >
> > URL:
> > https://protect2.fireeye.com/v1/url?k=77e8c227-2b3ccf55-77e882bc-86859b2931b3-a6817f347a752f02&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=https%3A%2F%2Fgithub.com%2Fllvm%2Fllvm-project%2Fcommit%2Fd9b962100942c71a4c26debaa716f7ab0c4ea8a1
> > DIFF:
> > https://protect2.fireeye.com/v1/url?k=3914be57-65c0b325-3914fecc-86859b2931b3-b52b8ad09d192520&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=https%3A%2F%2Fgithub.com%2Fllvm%2Fllvm-project%2Fcommit%2Fd9b962100942c71a4c26debaa716f7ab0c4ea8a1.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/Make
> > file
> > 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://protect2.fireeye.com/v1/url?k=573b93e5-0bef9e97-573bd37e-86859b2931b3-16c2f00072907349&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=https%3A%2F%2Freviews.llvm.org%2FD69743
> > . 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 <
> > https://protect2.fireeye.com/v1/url?k=8e578f0a-d2838278-8e57cf91-86859b2931b3-dd0cec1300e2b6f7&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=http%3A%2F%2Ff.name%2F
> > >)
> > + "%s -g -glldb -O1 -S -emit-llvm -x c -o %s -" %
> > (compiler_path, f.name <
> > https://protect2.fireeye.com/v1/url?k=97ff0e75-cb2b0307-97ff4eee-86859b2931b3-8f78a15b3725fa71&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=http%3A%2F%2Ff.name%2F
> > >)
> > 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/Ma
> > kefile
> > b/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Ma
> > kefile
> > index db8fa57abb91..ab505a684126 100644
> > ---
> > a/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Ma
> > kefile
> > +++
> > b/lldb/test/API/functionalities/param_entry_vals/basic_entry_values_x86_64/Ma
> > kefile
> > @@ -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 <
> > https://protect2.fireeye.com/v1/url?k=660a4b3a-3ade4648-660a0ba1-86859b2931b3-64d82e70c593c419&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=http%3A%2F%2Fllvm.dbg.cu%2F
> > > = !{!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 <mailto:cfe-commits at lists.llvm.org>
> >
> > https://protect2.fireeye.com/v1/url?k=1c0cd6aa-40d8dbd8-1c0c9631-86859b2931b3-2dd406840fa453be&q=1&e=88d8925e-f175-4c81-9485-741ddc24573f&u=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcfe-commits
> >
>
>
More information about the cfe-commits
mailing list