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