Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/flang
AgeCommit message (Collapse)Author
2022-03-15[flang] IEEE_ARITHMETIC must imply USE IEEE_EXCEPTIONSPeter Klausler
The intrinsic module IEEE_ARITHMETIC must incorporate the public names from the intrisic module IEEE_EXCEPTIONS. Rename IEEE_EXCEPTIONS to __Fortran_ieee_exceptions so that it won't clash with the nonintrinsic namespace, establish a new intrinic IEEE_EXCEPTIONS module that USEs it, and add a USE to IEEE_ARITHMETIC. Updated to use STREQUAL rather than ambiguous MATCHES in the CMakeLists.txt file. Differential Revision: https://reviews.llvm.org/D121490
2022-03-15[flang] Lower any intrinsicValentin Clement
This patch lowers the `any` intrinsic function to FIR. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121609 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: mleair <leairmark@gmail.com>
2022-03-14[flang] LBOUND() edge case: empty dimensionPeter Klausler
LBOUND must return 1 for an empty dimension, no matter what explicit expression might appear in a declaration or arrive in a descriptor. Differential Revision: https://reviews.llvm.org/D121488
2022-03-14Write a pass to annotate constant operands on FIR ops. This worksEric Schweitz
around the feature in MLIR's canonicalizer, which considers the semantics of constants differently based on how they are packaged and not their values and use. Add test. Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D121625
2022-03-14Revert "[flang] IEEE_ARITHMETIC must imply USE IEEE_EXCEPTIONS"Andrzej Warzynski
This reverts commit b6a7600491d755f6f700fe245b2fc7b928264c58. It caused the following build failure: ``` ninja: error: dependency cycle: include/flang/__fortran_ieee_exceptions.mod -> include/flang/__fortran_ieee_exceptions.mod ``` See e.g.: * https://lab.llvm.org/buildbot/#/builders/172/builds/9595 To reproduce: ``` cmake -G Ninja \ -DLLVM_TARGETS_TO_BUILD=host \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="clang;flang" \ ../../llvm ninja check-flang ```
2022-03-14[flang] IEEE_ARITHMETIC must imply USE IEEE_EXCEPTIONSPeter Klausler
The intrinsic module IEEE_ARITHMETIC must incorporate the public names from the intrisic module IEEE_EXCEPTIONS. Rename IEEE_EXCEPTIONS to __Fortran_ieee_exceptions so that it won't clash with the nonintrinsic namespace, establish a new intrinic IEEE_EXCEPTIONS module that USEs it, and add a USE to IEEE_ARITHMETIC. Differential Revision: https://reviews.llvm.org/D121490
2022-03-14[flang] Lower format statementValentin Clement
This patch lowers the format statement. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121611
2022-03-14[flang] Lower common blockValentin Clement
This patch lowers common block variable to FIR. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121610 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com>
2022-03-14[flang] Lower all intrinsicValentin Clement
Lower the `all` intrinsic procedure. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121607 Co-authored-by: mleair <leairmark@gmail.com> Co-authored-by: Jean Perier <jperier@nvidia.com>
2022-03-14[flang] Lower elemental callsValentin Clement
This patch adds more lowering of operations sub-expression inside elemental call arguments. It tests array contexts where an address is needed for each element (for the argument), but part of the array sub-expression must be lowered by value (for the operation) This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121606 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-14[flang][NFC] Use TODO with locationValentin Clement
Use the TODO macro in `flang/Lower/Todo.h` with the converter location. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D121582
2022-03-14[flang][NFC] Add todo in CallInterfaceValentin Clement
Add a todo for assumed shape dummy argument with VALUE attribute since this is not implemented yet. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D121581
2022-03-14[flang] Add runtime support for GET_COMMANDDiana Picus
Implement the GET_COMMAND intrinsic. Add 2 new parameters (sourceFile and line) so we can create a terminator for RUNTIME_CHECKs. Differential Revision: https://reviews.llvm.org/D118777
2022-03-14[flang] Add support for linkonce_odr in FIRJean Perier
Add support for parsing and converting linkonce_odr in FIR. Differential Revision: https://reviews.llvm.org/D121471
2022-03-13[NFC][flang][OpenMP] Fixes formatting issues with D110714Nimish Mishra
This NFC fixes formatting issues introduced with https://reviews.llvm.org/D110714 Reviewed By: peixin, shraiysh Differential Revision: https://reviews.llvm.org/D121186
2022-03-13[flang] Improve runtime crash messagesPeter Steinfeld
Where possible, I added additional information to the messages to help programmers figure out what went wrong. I also removed all uses of the word "bad" from the messages since (to me) that implies a moral judgement rather than a programming error. I replaced it with either "invalid" or "unsupported" where appropriate. Differential Revision: https://reviews.llvm.org/D121493
2022-03-12[CMake] Rename TARGET_TRIPLE to LLVM_TARGET_TRIPLEPetr Hosek
This clarifies that this is an LLVM specific variable and avoids potential conflicts with other projects. Differential Revision: https://reviews.llvm.org/D119918
2022-03-11[flang][NFC] rename IsKindParameterizedDerivedType and fix comment typosJean Perier
Following post-review feedback on https://reviews.llvm.org/D120804 and https://reviews.llvm.org/D120801 about type descriptor changes, fix typos in comments and rename IsKindParameterizedDerivedType to IsDerivedTypeWithKindParameter. Remove a useless `;`. Reviewed By: clementval, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121470
2022-03-11[flang] Add tests for allocatable globalValentin Clement
This patch adds couple of tests for allocatable globals and missing lowering for them This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121473 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-11[flang] Lower of elemental calls in array expressionValentin Clement
This patch adds tests and missing lowering code to lower elemental function/subroutine calls in array expression This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121474 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-11[flang] Fix DYLIB buildsAndrzej Warzynski
https://reviews.llvm.org/D120568 broke builds that set both `LLVM_BUILD_LLVM_DYLIB` and `LLVM_LINK_LLVM_DYLIB`. This patch fixes that. The build failure was caused by the fact that some LLVM libraries (which are also LLVM components) were listed directly as link-time dependencies instead of using `LINK_COMPONENTS` in CMake files. This lead to a linker invocation like this (simplified version to demonstrate the problem): ``` ld lib/libLLVM.so lib/libLLVMAnalysis.a lib/libLLVMTarget.a ``` That's problematic and unnecessary because `libLLVM.so` incorporates `libLLVMAnalysis` and `libLLVMTarget`. A correct invocation would look like this (`LLVM_LINK_LLVM_DYLIB` _is not_ set): ``` ld lib/libLLVMAnalysis.a lib/libLLVMTarget.a ``` or this (`LLVM_LINK_LLVM_DYLIB` _is_ set): ``` ld lib/libLLVM.so ``` Differential Revision: https://reviews.llvm.org/D121461
2022-03-11[flang] Remove deprecated fields from FIROps.tdAndrzej Warzynski
This patch removes deprecated parser/printer/verifier fields from FIROps.td. This is a follow-up of https://reviews.llvm.org/D119776 - it takes care of operations deriving from `fir_IntegralSwitchTerminatorOp` and `region_Op`. No new functionality is added, hence no tests. This patch addresses: https://github.com/llvm/llvm-project/issues/54314. Differential Revision: https://reviews.llvm.org/D121406 Some changes were extracted from D121090 (by River Riddle). co-authored-by: River Riddle <riddleriver@gmail.com>
2022-03-11[flang] Do not return true for pointer sub-object in IsPointerObjectJean Perier
evaluate::IsPointerObject used to return true for pointer suboject like `pointer(10)` while these object are not pointers. This prevented some checks like 15.5.2.7 to be correctly enforced (e.g., it was possible to pass `pointer(10)` to a non intent(in) dummy pointer). After updating IsPointerObject behavior and adding a test for 15.5.2.7 in call07.f90, a test in call03.f90 for 15.5.2.4(14) was failing. It appeared the related semantics check was relying on IsPointerObject to return true for `pointer(10)`. Adapt the code to detect pointer element in another way. While looking at the code, I also noticed that semantics was rejecting `character(1)` pointer/assumed shape suboject when these are allowed (the standard has a special case for character(1) in 15.5.2.4(14), and I verified that other compilers that enforce 15.5.2.4(14) do accept this). Differential Revision: https://reviews.llvm.org/D121377
2022-03-11[flang] Fix processing ModuleLikeUnit evaluationListPeixin-Qiao
Push the ModuleLikeUnit evalutionList when entering module unit. Pop it when exiting module unit if there is no module procedure. Otherwise, pop it when entering the first module procedure. Reviewed By: V Donaldson Differential Revision: https://reviews.llvm.org/D120460
2022-03-11[flang] Support for dump OpenMP/OpenACC declarative directives PFT in modulePeixin-Qiao
OpenMP/OpenACC declarative directives can also be used in module unit. Add support for dump them in module. Reviewed By: kiranchandramohan, V Donaldson Differential Revision: https://reviews.llvm.org/D120459
2022-03-10[flang] Lower pointer component in derived typeValentin Clement
This patch lowers pointer component part of derived types to FIR. This patch is part of the upstreaming effort from fir-dev branch. Depends on D121383 Reviewed By: PeteSteinfeld, schweitz Differential Revision: https://reviews.llvm.org/D121384 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-10[flang] Lower general forall statementValentin Clement
This patch lowers general forall statements. The forall are lowered to nested loops. This patch is part of the upstreaming effort from fir-dev branch. Depends on D121385 Reviewed By: PeteSteinfeld, schweitz Differential Revision: https://reviews.llvm.org/D121386 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-10[flang] Lower where statementValentin Clement
This patch lowers where statement to FIR. The where statement is lowered to a conbination of loops and if conditions. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121385 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-10[flang] Added basic connect to lower OpenMP constructsShraiysh Vaishay
Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D121382
2022-03-10[flang] Lower basic derived typesValentin Clement
This patch lowers basic derived type to FIR. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121383 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-09[flang][NFC] Remove old RTBuilder.hValentin Clement
RTBuilder.h has been moved in `flang/Optimizer/Builder/Runtime/RTBuilder.h`. This duplicate is not necessary anymore. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121317
2022-03-09[flang] Lower more array character casesValentin Clement
This patch adds more lowering and tests for character array assignment/copy. This patch is part of the upstreaming effort from fir-dev branch. Depends on D121300 Reviewed By: PeteSteinfeld, schweitz Differential Revision: https://reviews.llvm.org/D121301 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-09[flang] Update ArrayValueCopy to support array_amend and array_accessValentin Clement
This patch update the array value copy pass to support fir-array_amend and fir.array_access. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld, schweitz Differential Revision: https://reviews.llvm.org/D121300 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-09[flang] Add OpenACC flag to bbcValentin Clement
Add `-fopenacc` flag to the `bbc` tool. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: schweitz Differential Revision: https://reviews.llvm.org/D121117
2022-03-09[flang] Add OpenMP flag to bbcValentin Clement
Add `-fopenmp` flag to the `bbc` tool. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: schweitz, awarzynski Differential Revision: https://reviews.llvm.org/D121118
2022-03-09[flang] Fix extent computation in finalizationPeter Klausler
The code that computed the extent of a dimension of a non-allocatable/non-automatic component array during finalization had a reversed subtraction; fix, and use variables to make the code a little more readable. Differential Revision: https://reviews.llvm.org/D121163
2022-03-09[flang][driver] Add support for -S and implement -c/-emit-objAndrzej Warzynski
This patch adds support for: * `-S` in Flang's compiler and frontend drivers, and implements: * `-emit-obj` in Flang's frontend driver and `-c` in Flang's compiler driver (this is consistent with Clang). (these options were already available before, but only as placeholders). The semantics of these options in Clang and Flang are identical. The `EmitObjAction` frontend action is renamed as `BackendAction`. This new name more accurately reflects the fact that this action will primarily run the code-gen/backend pipeline in LLVM. It also makes more sense as an action implementing both `-emit-obj` and `-S` (originally, it was just `-emit-obj`). `tripleName` from FirContext.cpp is deleted and, when a target triple is required, `mlir::LLVM::LLVMDialect::getTargetTripleAttrName()` is used instead. In practice, this means that `fir.triple` is replaced with `llvm.target_triple`. The former was effectively ignored. The latter is used when lowering from the LLVM dialect in MLIR to LLVM IR (i.e. it's embedded in the generated LLVM IR module). The driver can then re-use it when configuring the backend. With this change, the LLVM IR files generated by e.g. `tco` will from now on contain the correct target triple. The code-gen.f90 test is replaced with code-gen-x86.f90 and code-gen-aarch64.f90. With 2 seperate files we can verify that `--target` is correctly taken into account. LIT configuration is updated to enable e.g.: ``` ! REQUIRES: aarch64-registered-target ``` Differential Revision: https://reviews.llvm.org/D120568
2022-03-09[mlir][OpenMP] Generating enums in accordance with the guidelinesShraiysh Vaishay
This patch changes the enums generated from `OMP.td` for MLIR according to the enum naming guidelines in LLVM Coding Standards. This also helps the issues we had with `static` being a C++ keyword and also a value for the schedule clause. Enumerator naming guidelines: https://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D120825
2022-03-09[flang] Remove 'using namespace mlir;` from header filesAndrzej Warzynski
Currently, CGOps.h and FIROps.h contain `using namespace mlir;`. Every file that includes one of these header files (directly and transitively) will have the MLIR namespace enabled. With name-clashes within sub-projects (LLVM and MLIR, MLIR and Flang), this is not desired. Also, it is not possible to "un-use" a namespace once it is "used". Instead, we should try to limit `using namespace` to implementation files (i.e. *.cpp). This patch removes `using namespace mlir;` from header files and adjusts other files accordingly. In header and TableGen files, extra namespace qualifier is added when referring to symbols defined in MLIR. Similar approach is adopted in source files that didn't require many changes. In files that would require a lot of changes, `using namespace mlir;` is added instead. Differential Revision: https://reviews.llvm.org/D120897
2022-03-09[flang] Use unix logical representation for fir.logicalJean Perier
The front-end and the runtime are currently using the unix logical representation, but lowering was not. These inconsistencies could caused issues. The only place that defines what the logical representation is in lowering is the translation from FIR to LLVM (FIR is agnostic to the actual representation). More precisely, the LLVM implementation of `fir.convert` between `i1` and `fir.logcial` is what defines the representation: - `fir.convert` from `i1` to `fir.logical` defines the `.true.` and `.false.` canonical representations - `fir.convert` from `fir.logical` to `i1` decides what the test for truth is. Unix representation is: - .true. canonical integer representation is 1 - .false. canonical integer representation is 0 - the test for truth is "integer representation != 0" For the record, the previous representation that was used was in codegen was: - .true. canonical integer representation is -1 (all bits 1) - .false. canonical integer representation is 0 - the test for truth is "integer representation lowest bit == 1" Differential Revision: https://reviews.llvm.org/D121200
2022-03-09[flang] Distinguish usage and portability warning messagesPeter Klausler
Using recently established message severity codes, upgrade non-fatal messages to usage and portability warnings as appropriate. Differential Revision: https://reviews.llvm.org/D121246
2022-03-09[flang] Lower associate constructValentin Clement
This patch lowers the `associate` construct. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121239 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2022-03-08[mlir][NFC] Update the Builtin dialect to use "Both" accessorsRiver Riddle
Differential Revision: https://reviews.llvm.org/D121189
2022-03-08[flang] Add nonfatal message classesPeter Klausler
F18 presently has fatal and non-fatal diagnostic messages. We'd like to make non-fatal warnings stand out better in the output of the compiler. This will turn out to be a large change that affects many files. This patch is just the first part. It converts a Boolean isFatal_ data member of the message classes into a severity code, and defines four of these codes (Error, Warning, Portability, and a catch-all Other). Later patches will result from sweeping over the parser and semantics, changing most non-fatal diagnostic messages into warnings and portability notes. Differential Revision: https://reviews.llvm.org/D121228
2022-03-08[flang][driver] Add support for `-debug-dump-pft`Andrzej Warzynski
This patch adds support for dumping the pre-FIR tree in `flang-new -fc1`, i.e. Flang's frontend driver. This flag is functionally identical to `-pft-test` in `bbc` and semantically similar to `-fdebug-dump-parse-tree` from `flang-new -fc1`. Differential Revision: https://reviews.llvm.org/D121198
2022-03-08[flang] Lower computed and assigned gotoValentin Clement
This patch lowers the computed and assigned goto statements. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld, schweitz Differential Revision: https://reviews.llvm.org/D121219 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com>
2022-03-08[flang] Lower sum intrinsicValentin Clement
This patch enables the lowering of the `sum` intrinsic. It adds also infrastructure to deal with optional arguments in intrinsics and implied loops. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D121221 Co-authored-by: Eric Schweitz <eschweitz@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: mleair <leairmark@gmail.com>
2022-03-08[flang][nfc] Update the CMake dependencies for `flangFrontend`Andrzej Warzynski
The "FrontendActions.cpp" file (which is one of the source files for the `flangFrontend` library) includes "Passes.h.inc" (indirectly, via "CLOptions.inc"). This file is generated alongside other TableGen outputs from the `FIROptTransformsPassIncGen` CMake target. This patch adds `FIROptTransformsPassIncGen` to the list of build dependencies for `flangFrontend`. The lack of this dependency might cause non-determinstic build failures, e.g. https://lab.llvm.org/buildbot/#/builders/160/builds/6210. Differential Revision: https://reviews.llvm.org/D121218
2022-03-08[flang] Remove unused variable in Allocatable.cppValentin Clement
Fix for buildbot failure: https://lab.llvm.org/buildbot/#/builders/180/builds/3532
2022-03-08[flang] Fix module file missing USE for shadowed derived typePeter Klausler
When a module uses a derived type that is shadowed by a generic interface, the module file was missing a USE statement for the name. Detect and handle this situation. Differential Revision: https://reviews.llvm.org/D121160