[flang] Handle leading zeroes after decimal in REAL formatted input
Leading zero digits after the decimal mark were being dropped. Reviewed By: sscalpone Differential Revision: https://reviews.llvm.org/D84282
This commit is contained in:
parent
87d7254733
commit
9bb091a8fc
|
@ -177,8 +177,8 @@ static int ScanRealInput(char *buffer, int bufferSize, IoStatementState &io,
|
|||
continue;
|
||||
}
|
||||
}
|
||||
if (ch == '0' && got == start) {
|
||||
// omit leading zeroes
|
||||
if (ch == '0' && got == start && !decimalPoint) {
|
||||
// omit leading zeroes before the decimal
|
||||
} else if (ch >= '0' && ch <= '9') {
|
||||
if (got < bufferSize) {
|
||||
buffer[got++] = ch;
|
||||
|
|
|
@ -420,11 +420,16 @@ int main() {
|
|||
realInTest("(F18.0)", " 0", 0x0);
|
||||
realInTest("(F18.0)", " ", 0x0);
|
||||
realInTest("(F18.0)", " -0", 0x8000000000000000);
|
||||
realInTest("(F18.0)", " 01", 0x3ff0000000000000);
|
||||
realInTest("(F18.0)", " 1", 0x3ff0000000000000);
|
||||
realInTest("(F18.0)", " 125.", 0x405f400000000000);
|
||||
realInTest("(F18.0)", " 12.5", 0x4029000000000000);
|
||||
realInTest("(F18.0)", " 1.25", 0x3ff4000000000000);
|
||||
realInTest("(F18.0)", " 01.25", 0x3ff4000000000000);
|
||||
realInTest("(F18.0)", " .125", 0x3fc0000000000000);
|
||||
realInTest("(F18.0)", " 0.125", 0x3fc0000000000000);
|
||||
realInTest("(F18.0)", " .0625", 0x3fb0000000000000);
|
||||
realInTest("(F18.0)", " 0.0625", 0x3fb0000000000000);
|
||||
realInTest("(F18.0)", " 125", 0x405f400000000000);
|
||||
realInTest("(F18.1)", " 125", 0x4029000000000000);
|
||||
realInTest("(F18.2)", " 125", 0x3ff4000000000000);
|
||||
|
|
Loading…
Reference in New Issue