|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
df6afee9 |
| 22-Jun-2022 |
Peter Klausler <[email protected]> |
[flang][runtime] Improve G0 output editing
G0 output editing should never overflow an output field and fill it with asterisks. It should also never elide the "E" in an exponent field, even if it ha
[flang][runtime] Improve G0 output editing
G0 output editing should never overflow an output field and fill it with asterisks. It should also never elide the "E" in an exponent field, even if it has more than three digits.
Differential Revision: https://reviews.llvm.org/D128396
show more ...
|
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
3f3edbe5 |
| 08-Jun-2022 |
Peter Klausler <[email protected]> |
[flang][runtime] Don't emit any leading blanks for G0/E0 output editing
There were cases where E0.d output editing (or G0.d editing that is converted to E0.d) would emit one or more leading blank ch
[flang][runtime] Don't emit any leading blanks for G0/E0 output editing
There were cases where E0.d output editing (or G0.d editing that is converted to E0.d) would emit one or more leading blank characters; fix them.
Differential Revision: https://reviews.llvm.org/D127426
show more ...
|
| #
dfcccc6d |
| 01-Jun-2022 |
Peter Klausler <[email protected]> |
[flang][runtime] Fix edge case discrepancies with EN output editing
The "engineering" ENw.d output editing descriptor has some difficult edge case behavior for values that might format into a bunch
[flang][runtime] Fix edge case discrepancies with EN output editing
The "engineering" ENw.d output editing descriptor has some difficult edge case behavior for values that might format into a bunch of 9's or round up to a 1 for a given scale factor. Fix the algorithm, and add tests to protect against regressions.
Differential Revision: https://reviews.llvm.org/D127028
show more ...
|
| #
da63fee0 |
| 28-May-2022 |
Peter Klausler <[email protected]> |
[flang][runtime] Allow extra character for E0.0 output editing
When the digit count ('d') is zero in E0 editing, allow for one more output character; otherwise, any - or + sign in the output causes
[flang][runtime] Allow extra character for E0.0 output editing
When the digit count ('d') is zero in E0 editing, allow for one more output character; otherwise, any - or + sign in the output causes an output field overflow.
Differential Revision: https://reviews.llvm.org/D127013
show more ...
|
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
e6873bfb |
| 06-Apr-2022 |
Peter Klausler <[email protected]> |
[flang][runtime] Don't skip input spaces when they are significant
When formatted input (not list-directed or NAMELIST) is in "BZ" mode, either because a BZ control edit descriptor appeared in a FOR
[flang][runtime] Don't skip input spaces when they are significant
When formatted input (not list-directed or NAMELIST) is in "BZ" mode, either because a BZ control edit descriptor appeared in a FORMAT or BLANK="ZERO" appeared in OPEN or READ, input editing must not skip over blanks before or within the input field.
Differential Revision: https://reviews.llvm.org/D123725
show more ...
|
| #
724709e0 |
| 04-Apr-2022 |
Peter Klausler <[email protected]> |
[flang] Make F0.1 output editing of zero edge case consistent
The statement PRINT '(2F0.1)', 0.0, 0.5 should emit consistent ".0 .5" output, not "0.0 .5".
Differential Revision: https://reviews.l
[flang] Make F0.1 output editing of zero edge case consistent
The statement PRINT '(2F0.1)', 0.0, 0.5 should emit consistent ".0 .5" output, not "0.0 .5".
Differential Revision: https://reviews.llvm.org/D123715
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
73b193ae |
| 16-Feb-2022 |
Peter Klausler <[email protected]> |
[flang] Allow more concurrently open NEWUNIT= values, with recycling
Add a header-only implementation of Briggs & Torczon's fast small integer set data structure to flang/include/flang/Common, and u
[flang] Allow more concurrently open NEWUNIT= values, with recycling
Add a header-only implementation of Briggs & Torczon's fast small integer set data structure to flang/include/flang/Common, and use it in the runtime to manage a pool of Fortran unit numbers with recycling. This replaces the bit set previously used for that purpose. The set is initialized on demand with the negations of all the NEWUNIT= unit numbers that can be returned to any kind of integer variable.
For programs that require more concurrently open NEWUNIT= unit numbers than the pool can hold, they are now allocated with a non-recycling counter. This allows as many open units as the operating system provides.
Many of the top-line comments in flang/unittests/Runtime had the wrong path name. I noticed this while adding a unit test for the fast integer set data structure, and cleaned them up.
Differential Revision: https://reviews.llvm.org/D120685
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
b77fd01a |
| 05-Jan-2022 |
Peter Klausler <[email protected]> |
[flang] Don't blank-fill remaining lines in internal output
Internal writes to character arrays should not blank-fill records (elements) past the last one that was written to.
Differential Revision
[flang] Don't blank-fill remaining lines in internal output
Internal writes to character arrays should not blank-fill records (elements) past the last one that was written to.
Differential Revision: https://reviews.llvm.org/D117342
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
d02b318a |
| 19-Nov-2021 |
Peter Klausler <[email protected]> |
[flang] Remove typo that affected complex namelist input
A recent patch to real/complex formatted input included what must have been an editing hiccup: "++ ++p" instead of "++p". This compiles, and
[flang] Remove typo that affected complex namelist input
A recent patch to real/complex formatted input included what must have been an editing hiccup: "++ ++p" instead of "++p". This compiles, and it broke the consumption of the trailing ')' of a complex value in namelist input by skipping over the character.
Extend existing test to cover this case.
Differential Revision: https://reviews.llvm.org/D114297
show more ...
|
| #
da25f968 |
| 02-Nov-2021 |
Peter Klausler <[email protected]> |
[flang] Runtime performance improvements to real formatted input
Profiling a basic internal real input read benchmark shows some hot spots in the code used to prepare input for decimal-to-binary con
[flang] Runtime performance improvements to real formatted input
Profiling a basic internal real input read benchmark shows some hot spots in the code used to prepare input for decimal-to-binary conversion, which is of course where the time should be spent. The library that implements decimal to/from binary conversions has been optimized, but not the code in the Fortran runtime that calls it, and there are some obvious light changes worth making here.
Move some member functions from *.cpp files into the class definitions of Descriptor and IoStatementState to enable inlining and specialization.
Make GetNextInputBytes() the new basic input API within the runtime, replacing GetCurrentChar() -- which is rewritten in terms of GetNextInputBytes -- so that input routines can have the ability to acquire more than one input character at a time and amortize overhead.
These changes speed up the time to read 1M random reals using internal I/O from a character array from 1.29s to 0.54s on my machine, which on par with Intel Fortran and much faster than GNU Fortran.
Differential Revision: https://reviews.llvm.org/D113697
show more ...
|
| #
d1b09ade |
| 10-Nov-2021 |
Peter Klausler <[email protected]> |
[flang] Fix rounding edge case in F output editing
When an Fw.d output edit descriptor has a "d" value exactly equal to the number of zeroes after the decimal point for a value (e.g., 0.07 with F5.1
[flang] Fix rounding edge case in F output editing
When an Fw.d output edit descriptor has a "d" value exactly equal to the number of zeroes after the decimal point for a value (e.g., 0.07 with F5.1), the Fw.d output editing code needs to do the rounding itself to either 0.0 or 0.1 after performing a conversion without rounding (to avoid 0.04999 rounding up twice).
Differential Revision: https://reviews.llvm.org/D113698
show more ...
|
| #
f65f830e |
| 11-Oct-2021 |
peter klausler <[email protected]> |
[flang] runtime: fix output B/O/Z editing of "negative" values
B/O/Z integer output editing must not reflect any sign extension of scalar output values. Add more size-dependent OutputInteger I/O AP
[flang] runtime: fix output B/O/Z editing of "negative" values
B/O/Z integer output editing must not reflect any sign extension of scalar output values. Add more size-dependent OutputInteger I/O APIs and kind instantiations of EditIntegerOutput.
Differential Revision: https://reviews.llvm.org/D111678
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
| #
830c0b90 |
| 01-Sep-2021 |
Peter Klausler <[email protected]> |
[flang] Move runtime API headers to flang/include/flang/Runtime
Move the closure of the subset of flang/runtime/*.h header files that are referenced by source files outside flang/runtime (apart from
[flang] Move runtime API headers to flang/include/flang/Runtime
Move the closure of the subset of flang/runtime/*.h header files that are referenced by source files outside flang/runtime (apart from unit tests) into a new directory (flang/include/flang/Runtime) so that relative include paths into ../runtime need not be used.
flang/runtime/pgmath.h.inc is moved to flang/include/flang/Evaluate; it's not used by the runtime.
Differential Revision: https://reviews.llvm.org/D109107
show more ...
|
|
Revision tags: llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
4876520e |
| 02-Aug-2021 |
peter klausler <[email protected]> |
[flang] runtime: For Fw.d formatting, don't oscillate forever
The algorithm for Fw.d output will drive binary to decimal conversion for an initial fixed number of digits, then adjust that number bas
[flang] runtime: For Fw.d formatting, don't oscillate forever
The algorithm for Fw.d output will drive binary to decimal conversion for an initial fixed number of digits, then adjust that number based on the result's exposent. For value close to a power of ten, this adjustment process wouldn't terminate; e.g., formatting 9.999 as F10.2 would start with 1e2, boost the digits to 2, get 9.99e1, decrease the digits, and loop. Solve by refusing to boost the digits a second time.
Differential Revision: https://reviews.llvm.org/D107490
show more ...
|
| #
65436e6b |
| 28-Jul-2021 |
Asher Mancinelli <[email protected]> |
[flang] Move External IO tests to use GTest
Port external-io test to use GTest. Remove Runtime tests directory. Rename RuntimeGTest directory to Runtime.
This is the last in a series of patches whi
[flang] Move External IO tests to use GTest
Port external-io test to use GTest. Remove Runtime tests directory. Rename RuntimeGTest directory to Runtime.
This is the last in a series of patches which ported tests from the old flang/unittests/Runtime test directory to use GTest in a temporary unittest directory under flang/unittests/RuntimeGTest. Now that all the tests in the old directory have been ported to use GTest, the old directory has been removed and the GTest directory has been renamed to flang/unittests/Runtime.
Differential Revision: https://reviews.llvm.org/D105315 Reviewed by: Meinersbur, awarzynski
show more ...
|