#
8f16101c |
| 07-Apr-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Accept & fold IEEE_SELECTED_REAL_KIND
F18 supports the standard intrinsic function SELECTED_REAL_KIND but not its synonym in the standard module IEEE_ARITHMETIC named IEEE_SELECTED_REAL_KIND
[flang] Accept & fold IEEE_SELECTED_REAL_KIND
F18 supports the standard intrinsic function SELECTED_REAL_KIND but not its synonym in the standard module IEEE_ARITHMETIC named IEEE_SELECTED_REAL_KIND until this patch.
Differential Revision: https://reviews.llvm.org/D100066
show more ...
|
#
52cc9df1 |
| 06-Apr-2021 |
Peter Steinfeld <psteinfeld@nvidia.com> |
[flang] Improve constant folding for type parameter inquiries
We were not folding type parameter inquiries for the form 'var%typeParam' where 'typeParam' was a KIND or LEN type parameter of a derive
[flang] Improve constant folding for type parameter inquiries
We were not folding type parameter inquiries for the form 'var%typeParam' where 'typeParam' was a KIND or LEN type parameter of a derived type and 'var' was a designator of the derived type. I fixed this by adding code to the function 'FoldOperation()' for 'TypeParamInquiry's to handle this case. I also cleaned up the code for the case where there is no designator.
In order to make the error messages correctly refer to both the points of declaration and instantiation, I needed to add an argument to the function 'InstantiateIntrinsicType()' for the location of the instantiation.
I also changed the formatting of 'TypeParamInquiry' to correctly format this case. I also added tests for both KIND and LEN type parameter inquiries in resolve104.f90.
Making these changes revealed an error in resolve89.f90 and caused one of the error messages in assign04.f90 to be different.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D99892
show more ...
|
#
b7ef8048 |
| 06-Apr-2021 |
Kiran Chandramohan <kiran.chandramohan@arm.com> |
Revert "[flang] Improve constant folding for type parameter inquiries"
This reverts commit 8c7bf2f93da9b64b07509f67552d592a86260ff5.
|
#
8c7bf2f9 |
| 05-Apr-2021 |
Peter Steinfeld <psteinfeld@nvidia.com> |
[flang] Improve constant folding for type parameter inquiries
We were not folding type parameter inquiries for the form 'var%typeParam' where 'typeParam' was a KIND or LEN type parameter of a derive
[flang] Improve constant folding for type parameter inquiries
We were not folding type parameter inquiries for the form 'var%typeParam' where 'typeParam' was a KIND or LEN type parameter of a derived type and 'var' was a designator of the derived type. I fixed this by adding code to the function 'FoldOperation()' for 'TypeParamInquiry's to handle this case. I also cleaned up the code for the case where there is no designator.
In order to make the error messages correctly refer to both the points of declaration and instantiation, I needed to add an argument to the function 'InstantiateIntrinsicType()' for the location of the instantiation.
I also changed the formatting of 'TypeParamInquiry' to correctly format this case. I also added tests for both KIND and LEN type parameter inquiries in resolve104.f90.
Making these changes revealed an error in resolve89.f90 and caused one of the error messages in assign04.f90 to be different.
Differential Revision: https://reviews.llvm.org/D99892
show more ...
|
#
2018dafc |
| 02-Feb-2021 |
Peter Steinfeld <psteinfeld@nvidia.com> |
[flang] Fix calls to LBOUND() intrinsic for arrays with lower bounds not 1
Constant folding for calls to LBOUND() was not working when the lower bound of a constant array was not 1.
I fixed this an
[flang] Fix calls to LBOUND() intrinsic for arrays with lower bounds not 1
Constant folding for calls to LBOUND() was not working when the lower bound of a constant array was not 1.
I fixed this and re-enabled the test in Evaluate/folding16.f90 that previously was silently failing. I slightly changed the test to parenthesize the first argument to exercise all of the new code.
Differential Revision: https://reviews.llvm.org/D95894
show more ...
|
#
efc5926c |
| 02-Feb-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Add TypeAndShape::MeasureElementSizeInBytes()
Split up MeasureSizeInBytes() so that array element sizes can be calculated accurately; use the new API in some places where DynamicType::Measur
[flang] Add TypeAndShape::MeasureElementSizeInBytes()
Split up MeasureSizeInBytes() so that array element sizes can be calculated accurately; use the new API in some places where DynamicType::MeasureSizeInBytes() was being used but the new API performs better due to TypeAndShape having precise CHARACTER length information.
Differential Revision: https://reviews.llvm.org/D95897
show more ...
|
#
dc6fadf7 |
| 01-Feb-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Detect UBOUND() error on assumed-size array
UBOUND() is not allowed on the last dimension of an assumed-size array dummy argument.
Differential Revision: https://reviews.llvm.org/D95831
|
#
6aa3591e |
| 15-Dec-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Implement STORAGE_SIZE(), SIZEOF(), C_SIZEOF()
STORAGE_SIZE() is a standard inquiry intrinsic (size in bits of an array element of the same type as the argument); SIZEOF() is a common extens
[flang] Implement STORAGE_SIZE(), SIZEOF(), C_SIZEOF()
STORAGE_SIZE() is a standard inquiry intrinsic (size in bits of an array element of the same type as the argument); SIZEOF() is a common extension that returns the size in bytes of its argument; C_SIZEOF() is a renaming of SIZEOF() in module ISO_C_BINDING.
STORAGE_SIZE() and SIZEOF() are implemented via rewrites to expressions; these expressions will be constant when the necessary type parameters and bounds are also constant.
Code to calculate the sizes of types (with and without alignment) was isolated into Evaluate/type.* and /characteristics.*. Code in Semantics/compute-offsets.* to calculate sizes and alignments of derived types' scopes was exposed so that it can be called at type instantiation time (earlier than before) so that these inquiry intrinsics could be called from specification expressions.
Differential Revision: https://reviews.llvm.org/D93322
show more ...
|
#
4cbfd93a |
| 25-Aug-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Make `TypeParamInquiry` monomorphic
Change the expression representation TypeParamInquiry from being a class that's templatized on the integer KIND of its result into a monomorphic represent
[flang] Make `TypeParamInquiry` monomorphic
Change the expression representation TypeParamInquiry from being a class that's templatized on the integer KIND of its result into a monomorphic representation that results in a SubscriptInteger that can then be converted.
This is a minor simplification, but it's worth doing because it is believed to also be a work-around for bugs in the MSVC compiler with overload resolution that affect the expression traversal framework.
Differential Revision: https://reviews.llvm.org/D86551
show more ...
|
#
8f0f9ead |
| 07-Jul-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Fix CHARACTER length folding problem
Do not rewrite LEN(x) or x%len to the expression that specifies the length of x when that length is not a constant expression. Its value may have changed
[flang] Fix CHARACTER length folding problem
Do not rewrite LEN(x) or x%len to the expression that specifies the length of x when that length is not a constant expression. Its value may have changed since the value of the expression was first captured in the definition of the object.
Reviewed By: tskeith, sscalpone
Differential Revision: https://reviews.llvm.org/D83352
show more ...
|
#
dd904082 |
| 01-Jul-2020 |
Tim Keith <tkeith@nvidia.com> |
[flang][NFC] Get formatting in sync with latest clang-format
flang/module only contains Fortran files and one is a .h so disable formatting on that directory.
Differential Revision: https://reviews
[flang][NFC] Get formatting in sync with latest clang-format
flang/module only contains Fortran files and one is a .h so disable formatting on that directory.
Differential Revision: https://reviews.llvm.org/D82989
show more ...
|
#
f1fa3b7f |
| 18-Jun-2020 |
Jean Perier <jperier@nvidia.com> |
[flang] AMAX0, MIN1... rewrite to MAX/MIN: make result conversion explicit
Summary: This patch changes speficic extremum functions rewrite to generic MIN/MAX. It applies to AMAX0, AMIN0, AMAX1, AMIN
[flang] AMAX0, MIN1... rewrite to MAX/MIN: make result conversion explicit
Summary: This patch changes speficic extremum functions rewrite to generic MIN/MAX. It applies to AMAX0, AMIN0, AMAX1, AMIN1, MAX0, MIN0, MAX1, MIN1, DMAX1, and DMIN1.
- Do not re-write specific extremums to MAX/MIN in intrinsic Probe and let folding rewrite it and introduc the conversion on the MIN/MAX result. - Also make operand promotion explicit in MIN/MAX folding.
For instance, after this patch: AMAX0(int8, int4) is rewritten to REAL(MAX(int8, INT(int4, 8)))
All this care is to avoid rewritting it to MAX(REAL(int8), REAL(int4)) that may not always be numerically equivalent to the first rewrite.
Reviewers: klausler, schweitz, sscalpone, jdoerfert, DavidTruby
Reviewed By: klausler, schweitz
Subscribers: llvm-commits, flang-commits
Tags: #flang, #llvm
Differential Revision: https://reviews.llvm.org/D81940
show more ...
|
#
76d71354 |
| 04-Apr-2020 |
Tim Keith <tkeith@nvidia.com> |
[flang] Add message formatting for std::int64_t
There is no printf formatting string for std::int64_t. Instead we have to cast to std::intmax_t and use `%jd`. This change simplifies that by automati
[flang] Add message formatting for std::int64_t
There is no printf formatting string for std::int64_t. Instead we have to cast to std::intmax_t and use `%jd`. This change simplifies that by automatically converting std::int64_t to std::intmax_t when formatting messages.
Original-commit: flang-compiler/f18@8a2343dfffc9ccb04bdfe4c16ca47128255d47bd Reviewed-on: https://github.com/flang-compiler/f18/pull/1101 Tree-same-pre-rewrite: false
show more ...
|
#
1f879005 |
| 29-Mar-2020 |
Tim Keith <tkeith@nvidia.com> |
[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
|
#
e0ca7b44 |
| 05-Mar-2020 |
Steve Scalpone <sscalpone@nvidia.com> |
[flang] Fix for 'wrong constant folding of assumed-rank array' (flang-compiler/f18#1010)
https://github.com/flang-compiler/f18/issues/990
Original-commit: flang-compiler/f18@d971333025bb316529d2335
[flang] Fix for 'wrong constant folding of assumed-rank array' (flang-compiler/f18#1010)
https://github.com/flang-compiler/f18/issues/990
Original-commit: flang-compiler/f18@d971333025bb316529d233528a725fcc726f6615 Reviewed-on: https://github.com/flang-compiler/f18/pull/1010
show more ...
|
#
64ab3302 |
| 25-Feb-2020 |
CarolineConcatto <51754594+CarolineConcatto@users.noreply.github.com> |
[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 <caroline.concatto@arm.com>
Original-commit: flang-compiler/f18@d2eb7a1c443d1539ef12b6f027074a0eb15b1ea0 Reviewed-on: https://github.com/flang-compiler/f18/pull/980
show more ...
|