|
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, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
479eed18 |
| 28-Mar-2022 |
Jean Perier <[email protected]> |
[flang][runtime] Ensure PointerDeallocate actually deallocate pointers
PointerDeallocate was silently doing nothing because it relied on Destroy that doe not do anything for Pointers. Add an option
[flang][runtime] Ensure PointerDeallocate actually deallocate pointers
PointerDeallocate was silently doing nothing because it relied on Destroy that doe not do anything for Pointers. Add an option to Destroy in order to destroy pointers.
Add a unit test for PointerDeallocate.
Differential Revision: https://reviews.llvm.org/D122492
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
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 ...
|
| #
43754306 |
| 08-Nov-2021 |
Jean Perier <[email protected]> |
[flang] Set the addendum when establishing pointer section in descriptor
If the source has an addendum, the descriptor that is being established to describe a section over the source needs to copy t
[flang] Set the addendum when establishing pointer section in descriptor
If the source has an addendum, the descriptor that is being established to describe a section over the source needs to copy the addendum so that derived type information is correctly set in the descriptor being established.
This allows namelist IO with derived type to work correctly.
Differential Revision: https://reviews.llvm.org/D113258
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, llvmorg-14-init |
|
| #
a48e4168 |
| 19-Jul-2021 |
peter klausler <[email protected]> |
[flang] Run-time derived type initialization and destruction
Use derived type information tables to drive default component initialization (when needed), component destruction, and calls to final su
[flang] Run-time derived type initialization and destruction
Use derived type information tables to drive default component initialization (when needed), component destruction, and calls to final subroutines. Perform these operations automatically for ALLOCATE()/DEALLOCATE() APIs for allocatables, automatics, and pointers. Add APIs for use in lowering to perform these operations for non-allocatable/automatic non-pointer variables. Data pointer component initialization supports arbitrary constant designators, a F'2008 feature, which may be a first for Fortran implementations.
Differential Revision: https://reviews.llvm.org/D106297
show more ...
|
| #
ad424cf1 |
| 16-Jul-2021 |
peter klausler <[email protected]> |
[flang] Runtime API for data pointers
Define and implement an API for use by lowering to implement operations on pointers.
Differential Revision: https://reviews.llvm.org/D106170
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3 |
|
| #
79caf69c |
| 17-Jun-2021 |
peter klausler <[email protected]> |
[flang] Runtime implementation for default derived type formatted I/O
This is *not* user-defined derived type I/O, but rather Fortran's built-in capabilities for using derived type data in I/O lists
[flang] Runtime implementation for default derived type formatted I/O
This is *not* user-defined derived type I/O, but rather Fortran's built-in capabilities for using derived type data in I/O lists and NAMELIST groups.
This feature depends on having the derived type description tables that are created by Semantics available, passed through compilation as initialized static objects to which pointers can be targeted in the descriptors of I/O list items and NAMELIST groups.
NAMELIST processing now handles component references on input (e.g., "&GROUP x%component = 123 /").
The C++ perspectives of the derived type information records were transformed into proper classes when it was necessary to add member functions to them.
The code in Semantics that generates derived type information was changed to emit derived type components in component order, not alphabetic order.
Differential Revision: https://reviews.llvm.org/D104485
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc2 |
|
| #
8ba9ee46 |
| 15-Jun-2021 |
peter klausler <[email protected]> |
[flang] Correct the subscripts used for arguments to character intrinsics
When chasing down another unrelated bug, I noticed that the implementations of various character intrinsic functions assume
[flang] Correct the subscripts used for arguments to character intrinsics
When chasing down another unrelated bug, I noticed that the implementations of various character intrinsic functions assume that the lower bounds of (some of) their arguments were 1. This isn't necessarily the case, so I've cleaned them up, tweaked the unit tests to exercise the fix, and regularized the allocation pattern used for results to use SetBounds() before Allocate() rather than the old original Descriptor::Allocate() wrapper around CFI_allocate().
Since there were few other remaining uses of the old original Descriptor::Allocate() wrapper, I also converted them to the new one and deleted the old one.
Differential Revision: https://reviews.llvm.org/D104325
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
6a1c3efa |
| 05-May-2021 |
peter klausler <[email protected]> |
[flang] Implement NAMELIST I/O in the runtime
Add InputNamelist and OutputNamelist as I/O data transfer APIs to be used with internal & external list-directed I/O; delete the needless original namel
[flang] Implement NAMELIST I/O in the runtime
Add InputNamelist and OutputNamelist as I/O data transfer APIs to be used with internal & external list-directed I/O; delete the needless original namelist-specific Begin... calls. Implement NAMELIST output and input; add basic tests.
Differential Revision: https://reviews.llvm.org/D101931
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5 |
|
| #
78a39d2a |
| 02-Apr-2021 |
peter klausler <[email protected]> |
[flang] TRANSFER() intrinsic function
API, implementation, and unit tests for the intrinsic function TRANSFER.
Differential Revision: https://reviews.llvm.org/D99799
|
|
Revision tags: llvmorg-12.0.0-rc4 |
|
| #
e372e0f9 |
| 31-Mar-2021 |
peter klausler <[email protected]> |
[flang] Implement reductions in the runtime
Add runtime APIs, implementations, and tests for ALL, ANY, COUNT, MAXLOC, MAXVAL, MINLOC, MINVAL, PRODUCT, and SUM reduction transformantional intrinsic f
[flang] Implement reductions in the runtime
Add runtime APIs, implementations, and tests for ALL, ANY, COUNT, MAXLOC, MAXVAL, MINLOC, MINVAL, PRODUCT, and SUM reduction transformantional intrinsic functions for all relevant argument and result types and kinds, both without DIM= arguments (total reductions) and with (partial reductions).
Complex-valued reductions have their APIs in C so that C's _Complex types can be used for their results.
Some infrastructure work was also necessary or noticed: * Usage of "long double" in the compiler was cleaned up a bit, and host dependences on x86 / MSVC have been isolated in a new Common/long-double header. * Character comparison has been exposed via an extern template so that reductions could use it. * Mappings from Fortran type category/kind to host C++ types and vice versa have been isolated into runtime/cpp-type.h and then used throughout the runtime as appropriate. * The portable 128-bit integer package in Common/uint128.h was generalized to support signed comparisons. * Bugs in descriptor indexing code were fixed.
Differential Revision: https://reviews.llvm.org/D99666
show more ...
|
| #
d811c829 |
| 25-Mar-2021 |
peter klausler <[email protected]> |
[flang] fix spurious runtime crash on TRIM('')
The standard interoperability routine CFI_establish() does not accept a zero-length CHARACTER type. Since these can be valid results of intrinsic func
[flang] fix spurious runtime crash on TRIM('')
The standard interoperability routine CFI_establish() does not accept a zero-length CHARACTER type. Since these can be valid results of intrinsic function references, work around the design of CFI_establish() in the wrapper routine that calls it.
Differential Revision: https://reviews.llvm.org/D99296
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
| #
4fede8bc |
| 07-Dec-2020 |
peter klausler <[email protected]> |
[flang] Implement derived type description table encoding
Define Fortran derived types that describe the characteristics of derived types, and instantiations of parameterized derived types, that are
[flang] Implement derived type description table encoding
Define Fortran derived types that describe the characteristics of derived types, and instantiations of parameterized derived types, that are of relevance to the runtime language support library. Define a suite of corresponding C++ structure types for the runtime library to use to interpret instances of the descriptions.
Create instances of these description types in Semantics as static initializers for compiler-created objects in the scopes that define or instantiate user derived types.
Delete obsolete code from earlier attempts to package runtime type information.
Differential Revision: https://reviews.llvm.org/D92802
show more ...
|
|
Revision tags: llvmorg-11.0.1-rc1 |
|
| #
8df28f0a |
| 10-Nov-2020 |
peter klausler <[email protected]> |
[flang] Implement runtime support for basic ALLOCATE/DEALLOCATE
Add error reporting infrastructure and support for ALLOCATE and DEALLOCATE statements of intrinsic types without SOURCE= or MOLD=.
Di
[flang] Implement runtime support for basic ALLOCATE/DEALLOCATE
Add error reporting infrastructure and support for ALLOCATE and DEALLOCATE statements of intrinsic types without SOURCE= or MOLD=.
Differential revision: https://reviews.llvm.org/D91215
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2 |
|
| #
3d627d6f |
| 17-Jun-2020 |
peter klausler <[email protected]> |
[flang] More Fortran runtime support for CHARACTER operations
Summary: - Remove C++ library dependence from lock.h - Implement LEN_TRIM, REPEAT, ADJUSTL, ADJUSTR, MAX/MIN intrinsic functions for C
[flang] More Fortran runtime support for CHARACTER operations
Summary: - Remove C++ library dependence from lock.h - Implement LEN_TRIM, REPEAT, ADJUSTL, ADJUSTR, MAX/MIN intrinsic functions for CHARACTER
Reviewers: tskeith, PeteSteinfeld, sscalpone, schweitz, DavidTruby
Reviewed By: PeteSteinfeld
Subscribers: llvm-commits, flang-commits
Tags: #flang, #llvm
Differential Revision: https://reviews.llvm.org/D82054
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc1 |
|
| #
1f879005 |
| 29-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Reformat with latest clang-format and .clang-format
Original-commit: flang-compiler/f18@9fe84f45d7fd685051004678d6b5775dcc4c6f8f Reviewed-on: https://github.com/flang-compiler/f18/pull/1094
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3 |
|
| #
3b635714 |
| 13-Feb-2020 |
peter klausler <[email protected]> |
[flang] Use hash table for UnitMap, avoid C++ STL binary dependence
Scan FORMAT strings locally to avoid C++ binary runtime dependence when computing deepest parenthesis nesting
Remove a dependency
[flang] Use hash table for UnitMap, avoid C++ STL binary dependence
Scan FORMAT strings locally to avoid C++ binary runtime dependence when computing deepest parenthesis nesting
Remove a dependency on ostream from runtime
Remove remaining direct external references from runtime to C++ library binaries
Remove runtime dependences on lib/common
SetPos() and SetRec()
Instantiate templates for input
Begin input; rearrange locking, deal with CLOSE races
View()
Update error message in test to agree with compiler change
First cut at real input
More robust I/O runtime error handling
Debugging of REAL input
Add iostat.{h,cpp}
Rename runtime/numeric-* to runtime/edit-*
Move templates around, templatize integer output editing
Move LOGICAL and CHARACTER output from io-api.cpp to edit-output.cpp
Change pointer argument to reference
More list-directed input
Complex list-directed input
Use enum class Direction rather than bool for templates
Catch up with changes to master
Undo reformatting of Lower code
Use record number instead of subscripts for internal unit
Unformatted sequential backspace
Testing and debugging
Dodge bogus GCC warning
Add <cstddef> for std::size_t to fix CI build
Address review comments
Original-commit: flang-compiler/f18@50406b349609efdde76e48bf2caa039d031dd1c4 Reviewed-on: https://github.com/flang-compiler/f18/pull/1053
show more ...
|
| #
64ab3302 |
| 25-Feb-2020 |
CarolineConcatto <[email protected]> |
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-b
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-by: Caroline Concatto <[email protected]>
Original-commit: flang-compiler/f18@d2eb7a1c443d1539ef12b6f027074a0eb15b1ea0 Reviewed-on: https://github.com/flang-compiler/f18/pull/980
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc2 |
|
| #
95696d56 |
| 05-Feb-2020 |
peter klausler <[email protected]> |
[flang] Progress on Fortran I/O runtime
Use internal units for internal I/O state
Replace use of virtual functions
reference_wrapper
Internal formatted output to array descriptor
Delete dead cod
[flang] Progress on Fortran I/O runtime
Use internal units for internal I/O state
Replace use of virtual functions
reference_wrapper
Internal formatted output to array descriptor
Delete dead code
Begin list-directed internal output
Refactorings and renamings for clarity
List-directed external I/O (character)
COMPLEX list-directed output
Control list items
First cut at unformatted I/O
More OPEN statement work; rename class to ExternalFileUnit
Complete OPEN (exc. for POSITION=), add CLOSE()
OPEN(POSITION=)
Flush buffers on crash and for terminal output; clean up
Documentation
Fix backquote in documentation
Fix typo in comment
Begin implementation of input
Refactor binary floating-point properties to a new header, simplify numeric output editing
Dodge spurious GCC 7.2 build warning
Address review comments
Original-commit: flang-compiler/f18@9c4bba11cf2329575ea9ee446f69e9caa797135c Reviewed-on: https://github.com/flang-compiler/f18/pull/982
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc1 |
|
| #
352d347a |
| 28-Jan-2020 |
Alexis Perry <[email protected]> |
[flang] Changed *.cc file extension to *.cpp (updated scripts) (flang-compiler/f18#958)
Updated CMake files accordingly, using better regex
Updated license headers to match new extension and fit wi
[flang] Changed *.cc file extension to *.cpp (updated scripts) (flang-compiler/f18#958)
Updated CMake files accordingly, using better regex
Updated license headers to match new extension and fit within 80 columns
Updated other comments within files that referred to the old extension
Original-commit: flang-compiler/f18@ae7721e611918631d1e3821dbb60f5ffcd9a69b1 Reviewed-on: https://github.com/flang-compiler/f18/pull/958
show more ...
|