This revision was automatically updated to reflect the committed changes.
Closed by commit rL370880: [lldb] Limit the amount of zeroes we use for padding 
when printing small floats (authored by teemperor, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D67001?vs=218072&id=218646#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67001/new/

https://reviews.llvm.org/D67001

Files:
  lldb/trunk/include/lldb/Target/Target.h
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/Makefile
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py
  lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/main.c
  lldb/trunk/source/Core/Debugger.cpp
  lldb/trunk/source/Core/DumpDataExtractor.cpp
  lldb/trunk/source/Target/Target.cpp
  lldb/trunk/source/Target/TargetProperties.td

Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/Makefile
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/Makefile
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/Makefile
@@ -0,0 +1,3 @@
+LEVEL = ../../make
+C_SOURCES := main.c
+include $(LEVEL)/Makefile.rules
Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/main.c
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/main.c
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/main.c
@@ -0,0 +1,121 @@
+float f_neg3 = 1.234567 / 1e3;
+float f_neg4 = 1.234567 / 1e4;
+float f_neg5 = 1.234567 / 1e5;
+float f_neg6 = 1.234567 / 1e6;
+float f_neg7 = 1.234567 / 1e7;
+float f_neg8 = 1.234567 / 1e8;
+float f_neg20 = 1.234567 / 1e20;
+float f_neg30 = 1.234567 / 1e30;
+
+float f_3 = 1.234567 * 1e3;
+float f_4 = 1.234567 * 1e4;
+float f_5 = 1.234567 * 1e5;
+float f_6 = 1.234567 * 1e6;
+float f_7 = 1.234567 * 1e7;
+float f_8 = 1.234567 * 1e8;
+float f_20 = 1.234567 * 1e20;
+float f_30 = 1.234567 * 1e30;
+
+double d_neg3 = 1.234567 / 1e3;
+double d_neg4 = 1.234567 / 1e4;
+double d_neg5 = 1.234567 / 1e5;
+double d_neg6 = 1.234567 / 1e6;
+double d_neg7 = 1.234567 / 1e7;
+double d_neg8 = 1.234567 / 1e8;
+double d_neg20 = 1.234567 / 1e20;
+double d_neg30 = 1.234567 / 1e30;
+double d_neg50 = 1.234567 / 1e50;
+double d_neg250 = 1.234567 / 1e250;
+
+double d_3 = 1.234567 * 1e3;
+double d_4 = 1.234567 * 1e4;
+double d_5 = 1.234567 * 1e5;
+double d_6 = 1.234567 * 1e6;
+double d_7 = 1.234567 * 1e7;
+double d_8 = 1.234567 * 1e8;
+double d_20 = 1.234567 * 1e20;
+double d_30 = 1.234567 * 1e30;
+double d_50 = 1.234567 * 1e50;
+double d_250 = 1.234567 * 1e250;
+
+int main (int argc, char const *argv[]) {
+  //% # Default setting should be 6.
+  //% self.expect("frame variable f_neg3", substrs=["0.00123456"])
+  //% self.expect("frame variable f_neg4", substrs=["0.000123456"])
+  //% self.expect("frame variable f_neg5", substrs=["0.0000123456"])
+  //% self.expect("frame variable f_neg6", substrs=["0.00000123456"])
+  //% self.expect("frame variable f_neg7", substrs=["1.234567", "E-7"])
+  //% self.expect("frame variable f_neg8", substrs=["1.23456", "E-8"])
+  //% self.expect("frame variable f_neg20", substrs=["E-20"])
+  //% self.expect("frame variable f_neg30", substrs=["E-30"])
+  //% self.expect("frame variable f_3", substrs=["1234.56"])
+  //% self.expect("frame variable f_4", substrs=["12345.6"])
+  //% self.expect("frame variable f_5", substrs=["123456"])
+  //% self.expect("frame variable f_6", substrs=["123456"])
+  //% self.expect("frame variable f_7", substrs=["123456"])
+  //% self.expect("frame variable f_8", substrs=["123456"])
+  //% self.expect("frame variable f_20", substrs=["E+20"])
+  //% self.expect("frame variable f_30", substrs=["E+30"])
+  //% self.expect("frame variable d_neg3", substrs=["0.00123456"])
+  //% self.expect("frame variable d_neg4", substrs=["0.000123456"])
+  //% self.expect("frame variable d_neg5", substrs=["0.0000123456"])
+  //% self.expect("frame variable d_neg6", substrs=["0.00000123456"])
+  //% self.expect("frame variable d_neg7", substrs=["1.23456", "E-7"])
+  //% self.expect("frame variable d_neg8", substrs=["1.23456", "E-8"])
+  //% self.expect("frame variable d_neg20", substrs=["1.23456", "E-20"])
+  //% self.expect("frame variable d_neg30", substrs=["1.23456", "E-30"])
+  //% self.expect("frame variable d_neg50", substrs=["1.23456", "E-50"])
+  //% self.expect("frame variable d_neg250", substrs=["E-250"])
+  //% self.expect("frame variable d_3", substrs=["1234.56"])
+  //% self.expect("frame variable d_4", substrs=["12345.6"])
+  //% self.expect("frame variable d_5", substrs=["123456"])
+  //% self.expect("frame variable d_6", substrs=["1234567"])
+  //% self.expect("frame variable d_7", substrs=["1234567"])
+  //% self.expect("frame variable d_8", substrs=["1234567"])
+  //% self.expect("frame variable d_20", substrs=["1.23456", "E+20"])
+  //% self.expect("frame variable d_30", substrs=["1.23456", "E+30"])
+  //% self.expect("frame variable d_50", substrs=["1.23456", "E+50"])
+  //% self.expect("frame variable d_250", substrs=["1.23456", "E+250"])
+  //% # Now change the setting to print all the zeroes.
+  //% # Note that changing this setting should invalidate the data visualizer
+  //% # cache so that the new setting is used in the following calls.
+  //% self.runCmd("settings set target.max-zero-padding-in-float-format 9999")
+  //% self.expect("frame variable  f_neg3", substrs=["0.00123456"])
+  //% self.expect("frame variable  f_neg4", substrs=["0.000123456"])
+  //% self.expect("frame variable  f_neg5", substrs=["0.0000123456"])
+  //% self.expect("frame variable  f_neg6", substrs=["0.00000123456"])
+  //% self.expect("frame variable  f_neg7", substrs=["0.000000123456"])
+  //% self.expect("frame variable  f_neg8", substrs=["0.0000000123456"])
+  //% self.expect("frame variable  f_neg20", substrs=["0.0000000000000000000123456"])
+  //% self.expect("frame variable  f_neg30", substrs=["0.00000000000000000000000000000123456"])
+  //% self.expect("frame variable  f_3", substrs=["1234.56"])
+  //% self.expect("frame variable  f_4", substrs=["12345.6"])
+  //% self.expect("frame variable  f_5", substrs=["123456"])
+  //% self.expect("frame variable  f_6", substrs=["1234567"])
+  //% self.expect("frame variable  f_7", substrs=["1234567"])
+  //% self.expect("frame variable  f_8", substrs=["1234567"])
+  //% self.expect("frame variable  f_20", substrs=["E+20"])
+  //% self.expect("frame variable  f_30", substrs=["E+30"])
+  //% self.expect("frame variable  d_neg3", substrs=["0.00123456"])
+  //% self.expect("frame variable  d_neg4", substrs=["0.000123456"])
+  //% self.expect("frame variable  d_neg5", substrs=["0.0000123456"])
+  //% self.expect("frame variable  d_neg6", substrs=["0.00000123456"])
+  //% self.expect("frame variable  d_neg7", substrs=["0.000000123456"])
+  //% self.expect("frame variable  d_neg8", substrs=["0.0000000123456"])
+  //% self.expect("frame variable  d_neg20", substrs=["0.0000000000000000000123456"])
+  //% self.expect("frame variable  d_neg30", substrs=["0.000000000000000000000000000001234567"])
+  //% self.expect("frame variable  d_neg50", substrs=["0.0000000000000000000000000000000000000000000000000123456"])
+  //% self.expect("frame variable  d_neg250", substrs=["0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456"])
+  //% self.expect("frame variable  d_3", substrs=["1234.56"])
+  //% self.expect("frame variable  d_4", substrs=["12345.6"])
+  //% self.expect("frame variable  d_5", substrs=["123456"])
+  //% self.expect("frame variable  d_6", substrs=["1234567"])
+  //% self.expect("frame variable  d_7", substrs=["1234567"])
+  //% self.expect("frame variable  d_8", substrs=["1234567"])
+  //% # Positive numbers are not affected by this setting.
+  //% self.expect("frame variable  d_20", substrs=["1.23456", "E+20"])
+  //% self.expect("frame variable  d_30", substrs=["1.23456", "E+30"])
+  //% self.expect("frame variable  d_50", substrs=["1.23456", "E+50"])
+  //% self.expect("frame variable  d_250", substrs=["1.23456", "E+250"])
+  return 0;
+}
Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py
@@ -0,0 +1,5 @@
+from lldbsuite.test import lldbinline
+from lldbsuite.test import decorators
+
+lldbinline.MakeInlineTest(
+    __file__, globals(), [])
Index: lldb/trunk/source/Core/DumpDataExtractor.cpp
===================================================================
--- lldb/trunk/source/Core/DumpDataExtractor.cpp
+++ lldb/trunk/source/Core/DumpDataExtractor.cpp
@@ -563,7 +563,8 @@
             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)) {
Index: lldb/trunk/source/Core/Debugger.cpp
===================================================================
--- lldb/trunk/source/Core/Debugger.cpp
+++ lldb/trunk/source/Core/Debugger.cpp
@@ -257,7 +257,14 @@
                                   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 @@
           }
         }
       }
-    } else if (is_escape_non_printables) {
-      DataVisualization::ForceUpdate();
     }
   }
   return error;
Index: lldb/trunk/source/Target/Target.cpp
===================================================================
--- lldb/trunk/source/Target/Target.cpp
+++ lldb/trunk/source/Target/Target.cpp
@@ -3789,6 +3789,12 @@
       nullptr, idx, g_target_properties[idx].default_uint_value != 0);
 }
 
+uint32_t TargetProperties::GetMaxZeroPaddingInFloatFormat() const {
+  const uint32_t idx = ePropertyMaxZeroPaddingInFloatFormat;
+  return m_collection_sp->GetPropertyAtIndexAsUInt64(
+      nullptr, idx, g_target_properties[idx].default_uint_value);
+}
+
 uint32_t TargetProperties::GetMaximumNumberOfChildrenToDisplay() const {
   const uint32_t idx = ePropertyMaxChildrenCount;
   return m_collection_sp->GetPropertyAtIndexAsSInt64(
Index: lldb/trunk/source/Target/TargetProperties.td
===================================================================
--- lldb/trunk/source/Target/TargetProperties.td
+++ lldb/trunk/source/Target/TargetProperties.td
@@ -60,6 +60,9 @@
   def SaveObjects: Property<"save-jit-objects", "Boolean">,
     DefaultFalse,
     Desc<"Save intermediate object files generated by the LLVM JIT">;
+  def MaxZeroPaddingInFloatFormat: Property<"max-zero-padding-in-float-format", "UInt64">,
+    DefaultUnsignedValue<6>,
+    Desc<"The maximum number of zeroes to insert when displaying a very small float before falling back to scientific notation.">;
   def MaxChildrenCount: Property<"max-children-count", "SInt64">,
     DefaultUnsignedValue<256>,
     Desc<"Maximum number of children to expand in any level of depth.">;
Index: lldb/trunk/include/lldb/Target/Target.h
===================================================================
--- lldb/trunk/include/lldb/Target/Target.h
+++ lldb/trunk/include/lldb/Target/Target.h
@@ -139,6 +139,8 @@
 
   bool GetEnableSyntheticValue() const;
 
+  uint32_t GetMaxZeroPaddingInFloatFormat() const;
+
   uint32_t GetMaximumNumberOfChildrenToDisplay() const;
 
   uint32_t GetMaximumSizeOfStringSummary() const;
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to