Revision tags: 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 |
|
#
6c09a9bf |
| 18-Jul-2024 |
Peter Klausler <35819229+klausler@users.noreply.github.com> |
[flang] Check assignment conformance for derived types (#99059)
Derived type assignment checking needs to account for the possibility of
derived assignment. The implementation was checking compile-
[flang] Check assignment conformance for derived types (#99059)
Derived type assignment checking needs to account for the possibility of
derived assignment. The implementation was checking compile-time
conformance errors only on the path for assignments of intrinsic types.
Add a static array conformance check in the derived type flow once it
has been established that no defined assignment exists.
Fixes https://github.com/llvm/llvm-project/issues/98981.
show more ...
|
Revision tags: 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 |
|
#
e7cb6778 |
| 19-Jul-2023 |
Peter Klausler <pklausler@nvidia.com> |
[flang] Enforce F'2023 C7125
An item whose declared type is ABSTRACT may not appear in an array constructor.
Differential Revision: https://reviews.llvm.org/D155969
|
Revision tags: 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, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3 |
|
#
75f9b189 |
| 15-Aug-2022 |
Peter Klausler <pklausler@nvidia.com> |
[flang] Compile-time checks for shape conformance on assignments
Assignment statements need to check for array shape conformance errors that are discernable at compilation time.
Differential Revisi
[flang] Compile-time checks for shape conformance on assignments
Assignment statements need to check for array shape conformance errors that are discernable at compilation time.
Differential Revision: https://reviews.llvm.org/D132161
show more ...
|
Revision tags: llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
ae93d8ea |
| 05-Jul-2022 |
Peter Klausler <pklausler@nvidia.com> |
[flang] Fold TRANSFER()
Fold usage of the raw data reinterpretation intrinsic function TRANSFER().
Differential Revision: https://reviews.llvm.org/D129671
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, 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, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
#
6c1ac141 |
| 06-Sep-2021 |
Ivan Zhechev <ivan.zhechev@arm.com> |
[Flang] Ported test_errors.sh to Python
To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"
[Flang] Ported test_errors.sh to Python
To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"). The RUN line of existing tests was changed to make use of the python script.
Used python regex in place of awk/sed.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D107575
show more ...
|
Revision tags: llvmorg-13.0.0-rc2 |
|
#
3265b933 |
| 20-Aug-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Extension: reduced scope for some implied DO loop indices
The index of an implied DO loop in a DATA statement or array constructor is defined by Fortran 2018 to have scope over its implied D
[flang] Extension: reduced scope for some implied DO loop indices
The index of an implied DO loop in a DATA statement or array constructor is defined by Fortran 2018 to have scope over its implied DO loop. This definition is unfortunate, because it requires the implied DO loop's bounds expressions to be in the scope of the index variable. Consequently, in code like
integer, parameter :: j = 5 real, save :: a(5) = [(j, j=1, j)]
the upper bound of the loop is a reference to the index variable, not the parameter in the enclosing scope.
This patch limits the scope of the index variable to the "body" of the implied DO loop as one would naturally expect, with a warning. I would have preferred to make this a hard error, but most Fortran compilers treat this case as f18 now does. If the standard were to be fixed, the warning could be made optional.
Differential Revision: https://reviews.llvm.org/D108595
show more ...
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
#
ec3049c7 |
| 15-Jun-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Cope with errors with array constructors
When a program attempts to put something like a subprogram into an array constructor, emit an error rather than crashing.
Differential Revision: htt
[flang] Cope with errors with array constructors
When a program attempts to put something like a subprogram into an array constructor, emit an error rather than crashing.
Differential Revision: https://reviews.llvm.org/D104336
show more ...
|
#
58c3f20b |
| 10-Jun-2021 |
Michael Kruse <llvm-project@meinersbur.de> |
[flang][windows] Run regression tests under Windows. NFCI.
Allow the lit test suite to run under Windows. This encompasses the following changes:
* Define `lit_tools_dir` for flang's test configur
[flang][windows] Run regression tests under Windows. NFCI.
Allow the lit test suite to run under Windows. This encompasses the following changes:
* Define `lit_tools_dir` for flang's test configuration * Replace `(<command> || true)` idiom with `not <command>` * Add `REQUIRES: shell` on tests that invoke a shell script
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D89368
show more ...
|
#
ac964175 |
| 03-Jun-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Support known constant lengths in DynamicType
The constexpr-capable class evaluate::DynamicType represented CHARACTER length only with a nullable pointer into the declared parameters of type
[flang] Support known constant lengths in DynamicType
The constexpr-capable class evaluate::DynamicType represented CHARACTER length only with a nullable pointer into the declared parameters of types in the symbol table, which works fine for anything with a declaration but turns out to not suffice to describe the results of the ACHAR() and CHAR() intrinsic functions. So extend DynamicType to also accommodate known constant CHARACTER lengths, too; use them for ACHAR & CHAR; clean up several use sites and fix regressions found in test.
Differential Revision: https://reviews.llvm.org/D103571
show more ...
|
Revision tags: llvmorg-12.0.1-rc1 |
|
#
e7be90bd |
| 12-Apr-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang] Update the regression tests to use the new driver when enabled
This patch updates most of the remaining regression tests (~400) to use `flang-new` rather then `f18` when `FLANG_BUILD_NEW_DRI
[flang] Update the regression tests to use the new driver when enabled
This patch updates most of the remaining regression tests (~400) to use `flang-new` rather then `f18` when `FLANG_BUILD_NEW_DRIVER` is set. This allows us to share more Flang regression tests between `f18` and `flang-new`. A handful of tests have not been ported yet - these are currently either failing or not supported by the new driver.
Summary of changes: * RUN lines in tests are updated to use `%flang_fc1` instead of `%f18` * option spellings in tests are updated to forms accepted by both `f18` and `flang-new` * variables in Bash scripts are renamed (e.g. F18 --> FLANG_FC1) The updated tests will now be run with the new driver, `flang-new`, whenever it is enabled (i.e when `FLANG_BUILD_NEW_DRIVER` is set).
Although this patch touches many files, vast majority of the changes are automatic: ``` grep -IEZlr "%f18" flang/test/ | xargs -0 -l sed -i 's/%f18/%flang_fc1/g ```
Differential Revision: https://reviews.llvm.org/D100309
show more ...
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, 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 |
|
#
543cd89d |
| 26-Jan-2021 |
Peter Steinfeld <psteinfeld@nvidia.com> |
[flang] Fix problems with constant arrays with lower bounds that are not 1
There were two problems with constant arrays whose lower bound is not 1. First, when folding the arrays, we were creating t
[flang] Fix problems with constant arrays with lower bounds that are not 1
There were two problems with constant arrays whose lower bound is not 1. First, when folding the arrays, we were creating the folded array to have lower bounds of 1 but, we were not re-adjusting their lower bounds to the declared values. Second, we were not calculating the extents correctly. Both of these problems led to bogus error messages.
I fixed the first problem by adjusting the lower bounds in NonPointerInitializationExpr() in Evaluate/check-expression.cpp. I wrote the class ArrayConstantBoundChanger, which is similar to the existing class ScalarConstantExpander. In the process of implementing and testing it, I found a bug that I fixed in ScalarConstantExpander which caused it to infinitely recurse on parenthesized expressions. I also removed the unrelated class ScalarExpansionVisitor, which was not used.
I fixed the second problem by changing the formula that calculates upper bounds in in the function ComputeUpperBound() in Evaluate/shape.cpp.
I added tests that trigger the bogus error messages mentioned above along with a constant folding tests that uses array operands with shapes that conform but have different bounds.
In the process of adding tests, I discovered that tests in Evaluate/folding09.f90 and folding16.f90 were written incorrectly, and I fixed them. This also revealed a bug in contant folding of the intrinsic "lbounds" which I plan to fix in a later change.
Differential Revision: https://reviews.llvm.org/D95449
show more ...
|
Revision tags: llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
#
641ede93 |
| 07-Dec-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Improve initializer semantics, esp. for component default values
This patch plugs many holes in static initializer semantics, improves error messages for default initial values and other com
[flang] Improve initializer semantics, esp. for component default values
This patch plugs many holes in static initializer semantics, improves error messages for default initial values and other component properties in parameterized derived type instantiations, and cleans up several small issues noticed during development. We now do proper scalar expansion, folding, and type, rank, and shape conformance checking for component default initializers in derived types and PDT instantiations. The initial values of named constants are now guaranteed to have been folded when installed in the symbol table, and are no longer folded or scalar-expanded at each use in expression folding. Semantics documentation was extended with information about the various kinds of initializations in Fortran and when each of them are processed in the compiler.
Some necessary concomitant changes have bulked this patch out a bit: * contextual messages attachments, which are now produced for parameterized derived type instantiations so that the user can figure out which instance caused a problem with a component, have been added as part of ContextualMessages, and their implementation was debugged * several APIs in evaluate::characteristics was changed so that a FoldingContext is passed as an argument rather than just its intrinsic procedure table; this affected client call sites in many files * new tools in Evaluate/check-expression.cpp to determine when an Expr actually is a single constant value and to validate a non-pointer variable initializer or object component default value * shape conformance checking has additional arguments that control whether scalar expansion is allowed * several now-unused functions and data members noticed and removed * several crashes and bogus errors exposed by testing this new code were fixed * a -fdebug-stack-trace option to enable LLVM's stack tracing on a crash, which might be useful in the future
TL;DR: Initialization processing does more and takes place at the right times for all of the various kinds of things that can be initialized.
Differential Review: https://reviews.llvm.org/D92783
show more ...
|
Revision tags: llvmorg-11.0.1-rc1 |
|
#
681978d3 |
| 16-Nov-2020 |
Peter Steinfeld <psteinfeld@nvidia.com> |
[flang] Duplicate names for ac-implied-do variables erroneously cause errors
According to section 19.4, paragraph 5, the scope of an ac-implied-do variable is the enclosing ac-implied-do. But we we
[flang] Duplicate names for ac-implied-do variables erroneously cause errors
According to section 19.4, paragraph 5, the scope of an ac-implied-do variable is the enclosing ac-implied-do. But we were not creating new scopes upon entry to an ac-implied-do. This was causing error messages to be erroneously emitted.
I fixed, the code, added a test to array-constr-values.f90, added the test folding15.f90 and corrected the test symbol05.f90.
Differential Revision: https://reviews.llvm.org/D91560
show more ...
|
#
e8f96899 |
| 30-Oct-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Allow array constructor implied DO loop indices as constant expressions
When the bounds of an implied DO loop in an array constructor are constant, the index variable of that loop is conside
[flang] Allow array constructor implied DO loop indices as constant expressions
When the bounds of an implied DO loop in an array constructor are constant, the index variable of that loop is considered a constant expression and can be used as such in the items in the value list of the implied DO loop. Since the KIND type parameter values of items in the value list can depend on the various values taken by such an index, it is not possible to represent those values with a single typed expression. So implement such loops by taking multiple passes over the parse tree of the implied DO loop instead.
Differential revision: https://reviews.llvm.org/D90494
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 |
|
#
49660234 |
| 30-Jul-2020 |
sameeran joshi <sameeranjayant.joshi@amd.com> |
[Flang] Checks for constraint C7110-C7115.
Added more tests. Annotate sources and tests. Improve error message.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D85014
|