diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index a705fa4eec3..5a4c4dfb90a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -95,10 +95,6 @@ static cl::opt UseDwarfRangesBaseAddressSpecifier( "use-dwarf-ranges-base-address-specifier", cl::Hidden, cl::desc("Use base address specifiers in debug_ranges"), cl::init(false)); -static cl::opt EmitDwarfDebugEntryValues( - "emit-debug-entry-values", cl::Hidden, - cl::desc("Emit the debug entry values"), cl::init(false)); - static cl::opt GenerateARangeSection("generate-arange-section", cl::Hidden, cl::desc("Generate dwarf aranges"), @@ -430,9 +426,7 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M) // 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; + EmitDebugEntryValues = Asm->TM.Options.ShouldEmitDebugEntryValues(); Asm->OutStreamer->getContext().setDwarfVersion(DwarfVersion); } diff --git a/lib/CodeGen/TargetOptionsImpl.cpp b/lib/CodeGen/TargetOptionsImpl.cpp index 4866d4c171c..0731cf9b28f 100644 --- a/lib/CodeGen/TargetOptionsImpl.cpp +++ b/lib/CodeGen/TargetOptionsImpl.cpp @@ -47,7 +47,11 @@ bool TargetOptions::HonorSignDependentRoundingFPMath() const { } /// NOTE: There are targets that still do not support the debug entry values -/// production. +/// production and that is being controlled with the SupportsDebugEntryValues. +/// In addition, SCE debugger does not have the feature implemented, so prefer +/// not to emit the debug entry values in that case. +/// The EnableDebugEntryValues can be used for the testing purposes. bool TargetOptions::ShouldEmitDebugEntryValues() const { - return SupportsDebugEntryValues || EnableDebugEntryValues; + return (SupportsDebugEntryValues && DebuggerTuning != DebuggerKind::SCE) || + EnableDebugEntryValues; } diff --git a/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir b/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir index b60c10a04e5..fdbebd306f3 100644 --- a/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir +++ b/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir @@ -21,7 +21,7 @@ # RUN: | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5 -implicit-check-not=DW_AT_call # # 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: -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: diff --git a/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir b/test/DebugInfo/MIR/X86/debug-entry-value-operation.mir similarity index 91% rename from test/DebugInfo/MIR/X86/DW_OP_entry_value.mir rename to test/DebugInfo/MIR/X86/debug-entry-value-operation.mir index f7f74b628d1..a368cc5c942 100644 --- a/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir +++ b/test/DebugInfo/MIR/X86/debug-entry-value-operation.mir @@ -1,16 +1,22 @@ # RUN: llc -start-before=livedebugvalues -mtriple=x86_64-apple-darwin -o %t %s -filetype=obj # RUN: llvm-dwarfdump %t | FileCheck %s -# -# int global; -# int foo(int p, int q, int r) { -# global = p + 1; -# asm __volatile("" : : : "edi", "esi", "edx"); -# return 123; -# } + +# RUN: llc -start-before=livedebugvalues -debugger-tune=sce -mtriple=x86_64-sce-ps4 -o %t1 %s -filetype=obj +# RUN: llvm-dwarfdump %t1 | FileCheck %s -check-prefix=SCE + +## Based on: +## int global; +## int foo(int p, int q, int r) { +## global = p + 1; +## asm __volatile("" : : : "edi", "esi", "edx"); +## return 123; +## } # CHECK: DW_TAG_formal_parameter # CHECK: DW_OP_entry_value +# SCE-NOT: DW_OP_{{.*}}entry_value + --- | ; ModuleID = 'multiple-param-dbg-value-entry.ll' source_filename = "multiple-param-dbg-value-entry.c"