[flang-commits] [PATCH] D123715: [flang] Make F0.1 output editing of zero edge case consistent
Peter Klausler via Phabricator via flang-commits
flang-commits at lists.llvm.org
Wed Apr 13 12:44:52 PDT 2022
klausler created this revision.
klausler added a reviewer: clementval.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a project: All.
klausler requested review of this revision.
The statement
PRINT '(2F0.1)', 0.0, 0.5
should emit consistent ".0 .5" output, not "0.0 .5".
https://reviews.llvm.org/D123715
Files:
flang/runtime/edit-output.cpp
flang/unittests/Runtime/NumericalFormatTest.cpp
Index: flang/unittests/Runtime/NumericalFormatTest.cpp
===================================================================
--- flang/unittests/Runtime/NumericalFormatTest.cpp
+++ flang/unittests/Runtime/NumericalFormatTest.cpp
@@ -333,6 +333,7 @@
{
{"(E9.1,';')", " -0.0E+00;"},
{"(F4.0,';')", " -0.;"},
+ {"(F0.1,';')", "-.0;"},
{"(G8.0,';')", "-0.0E+00;"},
{"(G8.1,';')", " -0. ;"},
{"(G0,';')", "-0.;"},
@@ -649,6 +650,7 @@
{"(F5.3,';')", -0.0005, "-.001;"},
{"(F5.3,';')", -0.00049999, "-.000;"},
{"(F5.3,';')", -0.000099999, "-.000;"},
+ {"(F0.1,';')", 0.0, ".0;"},
};
for (auto const &[format, value, expect] : individualTestCases) {
Index: flang/runtime/edit-output.cpp
===================================================================
--- flang/runtime/edit-output.cpp
+++ flang/runtime/edit-output.cpp
@@ -284,10 +284,13 @@
return EmitPrefix(edit, converted.length, editWidth) &&
io_.Emit(converted.str, converted.length) && EmitSuffix(edit);
}
- int scale{IsZero() ? 1 : edit.modes.scale}; // kP
- int expo{converted.decimalExponent + scale};
+ int expo{converted.decimalExponent + edit.modes.scale /*kP*/};
int signLength{*converted.str == '-' || *converted.str == '+' ? 1 : 0};
int convertedDigits{static_cast<int>(converted.length) - signLength};
+ if (IsZero()) { // don't treat converted "0" as significant digit
+ expo = 0;
+ convertedDigits = 0;
+ }
int trailingOnes{0};
if (expo > extraDigits && extraDigits >= 0 && canIncrease) {
extraDigits = expo;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D123715.422606.patch
Type: text/x-patch
Size: 1682 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20220413/e98ea7c9/attachment.bin>
More information about the flang-commits
mailing list