Hi David, Thanks for the heads-up!
On 23.3.20. 11:02, David Stenberg wrote: > 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? I am not sure, but I guess two weeks are fine. >> 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 Thanks, Djordje >> 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 <dblai...@gmail.com <mailto: >>> dblai...@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@lists.llvm.org <mailto:cfe-commits@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@lists.llvm.org <mailto:cfe-commits@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 >>> >> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits