1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00

[DWARF] Avoid entry_values production for SCE

SONY debugger does not prefer debug entry values feature, so
the plan is to avoid production of the entry values
by default when the tuning is SCE debugger.

The feature still can be enabled with the -debug-entry-values
option for the testing/development purposes.

This patch addresses PR46643.

Differential Revision: https://reviews.llvm.org/D83462
This commit is contained in:
Djordje Todorovic 2020-07-24 13:31:36 +02:00 committed by Djordje Todorovic
parent 0d030a773a
commit d652c017f2
4 changed files with 21 additions and 17 deletions

View File

@ -95,10 +95,6 @@ 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"),
@ -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);
}

View File

@ -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;
}

View File

@ -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:

View File

@ -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"