diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-09-04 11:41:23 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-09-04 11:41:23 +0000 |
commit | e5814d78ce51a072901573e6f86df6b9a79153ce (patch) | |
tree | def3c1a3c1d138530e4d1abd3645d099a378dd81 /lldb/source/Core | |
parent | e36fd9ed7602b8c78c6c0ba9103bba59b65b4556 (diff) | |
download | bcm5719-llvm-e5814d78ce51a072901573e6f86df6b9a79153ce.tar.gz bcm5719-llvm-e5814d78ce51a072901573e6f86df6b9a79153ce.zip |
[lldb] Limit the amount of zeroes we use for padding when printing small floats
Summary:
We got a radar that printing small floats is not very user-friendly in LLDB as we print them with up to
100 leading zeroes before starting to use scientific notation. This patch changes this by already using
scientific notation when we hit 6 padding zeroes by default and moves this value into a target setting
so that users can just set this number back to 100 if they for some reason preferred the old behaviour.
This new setting is influencing how we format data, so that's why we have to reset the data visualisation
cache when it is changed.
Note that we have always been using scientific notation for large numbers because it seems that
the LLVM implementation doesn't support printing out the padding zeroes for them. I would have fixed
that if it was trivial, but looking at the LLVM implementation for this it seems that this is not as trivial
as it sounds. I would say we look into this if we ever get a bug report about someone wanting to have
a large amount of trailing zeroes in their numbers instead of using scientific notation.
Fixes rdar://39744137
Reviewers: #lldb, clayborg
Reviewed By: clayborg
Subscribers: JDevlieghere, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D67001
llvm-svn: 370880
Diffstat (limited to 'lldb/source/Core')
-rw-r--r-- | lldb/source/Core/Debugger.cpp | 11 | ||||
-rw-r--r-- | lldb/source/Core/DumpDataExtractor.cpp | 3 |
2 files changed, 10 insertions, 4 deletions
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 683ecefe097..2e293f57c81 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -257,7 +257,14 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, llvm::StringRef value) { bool is_load_script = (property_path == "target.load-script-from-symbol-file"); - bool is_escape_non_printables = (property_path == "escape-non-printables"); + // These properties might change how we visualize data. + bool invalidate_data_vis = (property_path == "escape-non-printables"); + invalidate_data_vis |= + (property_path == "target.max-zero-padding-in-float-format"); + if (invalidate_data_vis) { + DataVisualization::ForceUpdate(); + } + TargetSP target_sp; LoadScriptFromSymFile load_script_old_value; if (is_load_script && exe_ctx->GetTargetSP()) { @@ -300,8 +307,6 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, } } } - } else if (is_escape_non_printables) { - DataVisualization::ForceUpdate(); } } return error; diff --git a/lldb/source/Core/DumpDataExtractor.cpp b/lldb/source/Core/DumpDataExtractor.cpp index 30c3a821c98..af8239332b1 100644 --- a/lldb/source/Core/DumpDataExtractor.cpp +++ b/lldb/source/Core/DumpDataExtractor.cpp @@ -563,7 +563,8 @@ lldb::offset_t lldb_private::DumpDataExtractor( llvm::SmallVector<char, 256> sv; // Show full precision when printing float values const unsigned format_precision = 0; - const unsigned format_max_padding = 100; + const unsigned format_max_padding = + target_sp->GetMaxZeroPaddingInFloatFormat(); size_t item_bit_size = item_byte_size * 8; if (item_bit_size == ast->getTypeSize(ast->FloatTy)) { |