#
954b692b |
| 25-Jun-2024 |
David Truby <david.truby@arm.com> |
[flang] Allow derf as alternate spelling for erf (#95784)
This patch adds derf as an alternate spelling for the erf intrinsic.
This spelling is supported by multiple other compilers and used by WRF.
|
#
181eab27 |
| 29-Jan-2024 |
jeanPerier <jperier@nvidia.com> |
[flang] Set KIND in compiler generated COUNT for SIZE(PACK) (#79801)
Compiler was rewriting SIZE(PACK(x, MASK)) to COUNT(MASK). It was
wrapping the COUNT call without a KIND argument (leading to IN
[flang] Set KIND in compiler generated COUNT for SIZE(PACK) (#79801)
Compiler was rewriting SIZE(PACK(x, MASK)) to COUNT(MASK). It was
wrapping the COUNT call without a KIND argument (leading to INTEGER(4)
result in the characteristics) in an Expr<ExtentType> (implying
INTEGER(8) result), this lead to inconsistencies that later hit verifier
errors in lowering.
Set the KIND argument to the KIND of ExtentType to ensure the built
expression is consistent.
This requires giving access to some safe place where the "kind" name can
be saved and turned into a CharBlock (count has a DIM argument that
require using the KIND keyword here). For the FoldingContext that belong
to SemanticsContext, this is the same string set as the one used by
SemanticsContext for similar purposes.
show more ...
|
#
1c91d9bd |
| 14-Nov-2023 |
Peter Klausler <35819229+klausler@users.noreply.github.com> |
[flang] Ensure that portability warnings are conditional (#71857)
Before emitting a warning message, code should check that the usage in
question should be diagnosed by calling ShouldWarn(). A fair
[flang] Ensure that portability warnings are conditional (#71857)
Before emitting a warning message, code should check that the usage in
question should be diagnosed by calling ShouldWarn(). A fair number of
sites in the code do not, and can emit portability warnings
unconditionally, which can confuse a user that hasn't asked for them
(-pedantic) and isn't terribly concerned about portability *to* other
compilers.
Add calls to ShouldWarn() or IsEnabled() around messages that need them,
and add -pedantic to tests that now require it to test their portability
messages, and add more expected message lines to those tests when
-pedantic causes other diagnostics to fire.
show more ...
|
#
23c2bedf |
| 01-Jul-2022 |
Peter Klausler <pklausler@nvidia.com> |
[flang] Establish a single source of target information for semantics
Create a TargetCharacteristics class to centralize the few items of target specific information that are relevant to semantics.
[flang] Establish a single source of target information for semantics
Create a TargetCharacteristics class to centralize the few items of target specific information that are relevant to semantics. Use the new class for all target queries, including derived type component layout modeling.
Future work will initialize this class with target information provided or forwarded by the drivers, and use it to fold layout-dependent intrinsic functions like TRANSFER().
Differential Revision: https://reviews.llvm.org/D129018
Updates: Attempts to work around build issues on Windows.
show more ...
|
#
0b55a8dc |
| 14-Apr-2022 |
PeixinQiao <qiaopeixin@huawei.com> |
[flang] Fix intrinsic interface for DIMAG/DCONJG
The intrinsics DREAL, DIMAG, and DCONJG are from Fortran 77 extensions. For DREAL, the type of argument is extended to any complex. For DIMAG and DCO
[flang] Fix intrinsic interface for DIMAG/DCONJG
The intrinsics DREAL, DIMAG, and DCONJG are from Fortran 77 extensions. For DREAL, the type of argument is extended to any complex. For DIMAG and DCONJG, the type of argument for them should be complex(8). For DIMAG, the result type should be real(8). For DCONJG, the result type should be complex(8). Fix the intrinsic interface for them and add test cases for the semantic checks and the lowering.
Reviewed By: Jean Perier
Differential Revision: https://reviews.llvm.org/D123459
show more ...
|
#
18e63289 |
| 05-Oct-2021 |
Craig Rasmussen <rasmussen17@llnl.gov> |
[flang] Remove incorrect unit test
Any test of the team_number intrinsic function will apparently fail because it doesn't have access to ISO_FORTRAN_ENV when called.
|
#
9dd3965e |
| 04-Oct-2021 |
Craig Rasmussen <rasmussen17@llnl.gov> |
[flang] Added tests for intrinsic function 'team_number()'
reviewers: klausler, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D100897
|
#
5661317f |
| 15-Sep-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Put intrinsic function table back into order
Some intrinsic functions weren't findable because the table wasn't strictly in order of names.
And complete a missing generalization of the exte
[flang] Put intrinsic function table back into order
Some intrinsic functions weren't findable because the table wasn't strictly in order of names.
And complete a missing generalization of the extension DCONJG to accept any kind of complex argument, like DREAL and DIMAG were.
Differential Revision: https://reviews.llvm.org/D110002
show more ...
|
#
46ade6d0 |
| 16-Mar-2021 |
peter klausler <pklausler@nvidia.com> |
[flang] Order Symbols by source provenance
In parser::AllCookedSources, implement a map from CharBlocks to the CookedSource instances that they cover. This permits a fast Find() operation based on
[flang] Order Symbols by source provenance
In parser::AllCookedSources, implement a map from CharBlocks to the CookedSource instances that they cover. This permits a fast Find() operation based on std::map::equal_range to map a CharBlock to its enclosing CookedSource instance.
Add a creation order number to each CookedSource. This allows AllCookedSources to provide a Precedes(x,y) predicate that is a true source stream ordering between two CharBlocks -- x is less than y if it is in an earlier CookedSource, or in the same CookedSource at an earlier position.
Add a reference to the singleton SemanticsContext to each Scope.
All of this allows operator< to be implemented on Symbols by means of a true source ordering. From a Symbol, we get to its Scope, then to the SemanticsContext, and then use its AllCookedSources reference to call Precedes().
Differential Revision: https://reviews.llvm.org/D98743
show more ...
|
#
5881bf00 |
| 14-Sep-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] More clean-up of CookedSource API
The std::string holding the content of a CookedSource no longer needs to be exposed in its API after the recent work that allows the parsing context to hold
[flang] More clean-up of CookedSource API
The std::string holding the content of a CookedSource no longer needs to be exposed in its API after the recent work that allows the parsing context to hold multiple instances of a CookedSource. So clean the API. These changes were extracted from some work in progress that was made easier by the API changes.
Differential Revision: https://reviews.llvm.org/D87635
show more ...
|
#
92a54197 |
| 31-Aug-2020 |
peter klausler <pklausler@nvidia.com> |
[flang] Support multiple CookedSource instances
These are owned by an instance of a new class AllCookedSources.
This removes the need for a Scope to own a string containing a module's cooked source
[flang] Support multiple CookedSource instances
These are owned by an instance of a new class AllCookedSources.
This removes the need for a Scope to own a string containing a module's cooked source stream, and will enable errors to be emitted when parsing module files in the future.
Differential Revision: https://reviews.llvm.org/D86891
show more ...
|
#
0e9e06a6 |
| 06-Aug-2020 |
peter klausler <pklausler@nvidia.com> |
[flang][NFC] Reformat files with current clang-format
Differential Revision: https://reviews.llvm.org/D85489
|
#
67e41df4 |
| 30-Jul-2020 |
Jean Perier <jperier@nvidia.com> |
[flang] Expose specific to generic intrinsic name mapping
The intrinsic lowering facility is based on the generic intrinsic names to avoid duplicating implementations. Specific intrinsics call are r
[flang] Expose specific to generic intrinsic name mapping
The intrinsic lowering facility is based on the generic intrinsic names to avoid duplicating implementations. Specific intrinsics call are re-written to call to the generic versions by the front-end but this cannot be done when specific intrinsics are passed as arguments (the rewrite would give illegal/ambiguous unparsed Fortran). Solve the issue by making the specific to generic name mapping accessible to lowering and can be later used to generate the unrestricted intrinsic functions.
Reviewed By: schweitz
Differential Revision: https://reviews.llvm.org/D84842
show more ...
|
#
c6a23df6 |
| 07-Jul-2020 |
Katherine Rasmussen <ktrasmussn@gmail.com> |
[flang] Make 'num_images()' intrinsic
I added 'num_images()' to the list of functions that are evaluated as intrinsic. I also added a test file in flang/test/Semantics to test calls to 'num_images()
[flang] Make 'num_images()' intrinsic
I added 'num_images()' to the list of functions that are evaluated as intrinsic. I also added a test file in flang/test/Semantics to test calls to 'num_images()'. There was a call to 'num_images()' in flang/test/Semantics/call10.f90 that expected an error, now it no longer produces an error. So I edited that file accordingly. I also edited the intrinsics unit test to add further testing of 'num_images()'.
Differential Revision: https://reviews.llvm.org/D83142
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
|
#
8670e499 |
| 28-Feb-2020 |
Caroline Concatto <caroline.concatto@arm.com> |
[flang] [LLVMify F18] Replace the use std::ostream with LLVM streams llvm::ostream
This patch replaces the occurrence of std::ostream by llvm::raw_ostream. In LLVM Coding Standards[1] "All new code
[flang] [LLVMify F18] Replace the use std::ostream with LLVM streams llvm::ostream
This patch replaces the occurrence of std::ostream by llvm::raw_ostream. In LLVM Coding Standards[1] "All new code should use raw_ostream instead of ostream".[1]
As a consequence, this patch also replaces the use of: std::stringstream by llvm::raw_string_ostream or llvm::raw_ostream* std::ofstream by llvm::raw_fd_ostream std::endl by '\n' and flush()[2] std::cout by llvm::outs() and std::cerr by llvm::errs()
It also replaces std::strerro by llvm::sys::StrError** , but NOT in Fortran runtime libraries
*std::stringstream were replaced by llvm::raw_ostream in all methods that used std::stringstream as a parameter. Moreover, it removes the pointers to these streams.
[1]https://llvm.org/docs/CodingStandards.html [2]https://releases.llvm.org/2.5/docs/CodingStandards.html#ll_avoidendl
Signed-off-by: Caroline Concatto <caroline.concatto@arm.com>
Running clang-format-7
Signed-off-by: Caroline Concatto <caroline.concatto@arm.com>
Removing residue of ostream library
Signed-off-by: Caroline Concatto <caroline.concatto@arm.com>
Original-commit: flang-compiler/f18@a3507d44b8911e6024033aa583c1dc54e0eb89fd Reviewed-on: https://github.com/flang-compiler/f18/pull/1047
show more ...
|
#
ee5fa1f2 |
| 19-Feb-2020 |
Luke Ireland <luke.ireland@arm.com> |
[flang] Create a separate directory for unittests
Some of the regression tests are C programs that act as test harnesses for the compiler internals as opposed to being Fortran inputs to test the com
[flang] Create a separate directory for unittests
Some of the regression tests are C programs that act as test harnesses for the compiler internals as opposed to being Fortran inputs to test the compiler in action. The former style of tests are analog to LLVM's unittests and will not use the lit framework.
Change-Id: I0ff10e23f66ff843e8fff4c35cfb6559b9dab762
Original-commit: flang-compiler/f18@2bfddbe8f8898551a28c3ea07b7ae508018f8634 Reviewed-on: https://github.com/flang-compiler/f18/pull/1027 Tree-same-pre-rewrite: false
show more ...
|