summaryrefslogtreecommitdiff
path: root/flang
Commit message (Collapse)AuthorAgeFilesLines
...
* [flang][openacc] Fix lowerbound when there is no subscriptsValentin Clement2023-05-092-23/+21
| | | | | | | | | | | | | | The lowerbound was not correctly normalized to 0 when the bound are generated for an array without subscripts. ``` integer :: a(11:20) !$acc enter data create(a) ``` Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D150208
* [mlir][openacc] Cleanup acc.exit_data from old data clause operandsValentin Clement2023-05-093-31/+0
| | | | | | | | | | | | | | | | | Since the new data operand operations have been added in D148389 and adopted on acc.exit_data in D149601, the old clause operands are no longer needed. The LegalizeDataOpForLLVMTranslation will become obsolete when all operations will be cleaned. For the time being only the appropriate part are being removed. processOperands will also receive some updates once all the operands will be coming from an acc data operand operation. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D150145
* [flang][openacc] Lower self clause on acc update as host clauseValentin Clement2023-05-092-0/+15
| | | | | | | | | Self clause is the same same as the host clause. Lower it in a simmilar way. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D150174
* [flang] Ensure pointer components are always establishedJean Perier2023-05-093-3/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up of https://reviews.llvm.org/D149979 for lowering. In Fortran, it is possible to assign a pointer to another pointer with an undefined association status. When using the runtime do to none trivial pointer association, if the descriptor are garbage, the runtime cannot safely detect that it has a garbage descriptor, and it cannot safely know the descriptor size leading to undefined behavior. Another reason to initialize descriptor of pointers is to record any non deferred length parameter value. Hence, although this is not required by Fortran, f18 always initialize pointers to NULL(). This was already done in lowering for whole pointer object, but not for pointer components. This patch uses the related semantics patch that updated derivedTypeSpe::HasDefaultInitialization to ensure pointer components of local and global object are always initialized. It adds tests to ensure that allocation of such derived type uses the runtime to ensure the storage is initialized, and that structure constructors are setting the descriptor component to NULL() if no initial target is given. Differential Revision: https://reviews.llvm.org/D150180
* [mlir][openacc] Cleanup acc.enter_data from old data clause operandsValentin Clement2023-05-093-14/+0
| | | | | | | | | | | | | | | | | Since the new data operand operations have been added in D148389 and adopted on acc.enter_data in D148721, the old clause operands are no longer needed. The LegalizeDataOpForLLVMTranslation will become obsolete when all operations will be cleaned. For the time being only the appropriate part are being removed. processOperands will also receive some updates once all the operands will be coming from an acc data operand operation. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D150132
* [flang][openacc] Lower if_present clause correctly on acc updateValentin Clement2023-05-092-0/+7
| | | | | | | | | | | The `if_present` clause is modeled as an attribute on the acc.update operation. The lowering was not adding correctly the attribute when the clause was present. This patch update the lowering to add the attribute when needed. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D150171
* [flang][hlfir] Lower left-hand side vector subscripts to HLFIRJean Perier2023-05-094-1/+294
| | | | | | | | | | This patch lowers assignments to vector subscripted designators into the newly added hlfir.elemental_addr and hlfir.region_assign. Note that the codegen of these operation to FIR is still TODO and will still emit a TODO message when trying to compile programs end to end. Differential Revision: https://reviews.llvm.org/D149962
* [flang][hlfir] Lower WHERE to HLFIRJean Perier2023-05-092-14/+264
| | | | | | | Lower WHERE to the newly added hlfir.where and hlfir.elsewhere operations. Differential Revision: https://reviews.llvm.org/D149950
* [flang][hlfir] Lower forall to HLFIRJean Perier2023-05-092-67/+440
| | | | | | | | | | | Lower Forall to the previously added hlfir.forall, hlfir.forall_mask. hlfir.forall_index, and hlfir.region_assign operations. The HLFIR assignment code lowering is moved into genDataAssignment for more readability and so that user defined assignment (still a TODO), will be able to share most of the logic. Differential Revision: https://reviews.llvm.org/D149878
* [flang] Prevent character length setting with dangling ac-do-variable.Slava Zakharin2023-05-082-1/+17
| | | | | | | | | This fixes LEN inquiry on array constructors where the length expression includes references to the ac-do-variable. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D150149
* [flang] Semantics for ISO_C_BINDING's C_LOC()Peter Klausler2023-05-0810-33/+156
| | | | | | | Make __builtin_c_loc() into an intrinsic function and verify the special semantic requirements on its actual arguments. Differential Revision: https://reviews.llvm.org/D149988
* [flang] Procedure pointers are not descriptorsPeter Klausler2023-05-083-20/+10
| | | | | | | | Code in Evaluate/type.cpp was maintaining a very old assumption that procedure pointers would need to be represented as descriptors. This is not the case -- they are code or thunk addresses. Differential Revision: https://reviews.llvm.org/D149984
* [flang][runtime] Initialize uninitialized pointer componentsPeter Klausler2023-05-0813-25/+55
| | | | | | | | | | | Pointer components without default initialization pose some difficult (or impossible) problems when they appear as right-hand side targets in pointer assignment statements; they may contain garbage or stale data that looks enough like a valid descriptor to cause a crash. Solve the problem by avoiding it -- ensure that pointers' descriptors are at least minimally established. Differential Revision: https://reviews.llvm.org/D149979
* [mlir][openacc] Cleanup acc.update from old data clause operandsValentin Clement2023-05-083-30/+0
| | | | | | | | | | | | | | | | | | Since the new data operand operations have been added in D148389 and adopted on acc.update in D149909, the old clause operands are no longer needed. This is a first patch to start cleaning the OpenACC operations with data clause operands. The `LegalizeDataOpForLLVMTranslation` will become obsolete when all operations will be cleaned. For the time being only the appropriate part are being removed. `processOperands` will also receive some updates once all the operands will be coming from an acc data operand operation. Reviewed By: razvanlupusoru, jeanPerier Differential Revision: https://reviews.llvm.org/D150053
* [mlir][opeancc] Update acc.update verifier for dataOperandsValentin Clement2023-05-081-1/+0
| | | | | | | | | Data operands associated with acc.update should comes from acc data entry/exit operations or acc.getdeviceptr. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D149990
* [mlir][CallOpInterface] Add `setCalleeFromCallable` methodWhitney Tsang2023-05-081-0/+8
| | | | | | | | | | | | Currently `CallOpInterface` has a method `getCallableForCallee` to have a consistent way to get the callee from an operation with `CallOpInterface`, but missing a consistent way to set a callee for an operation with `CallOpInterface`. A set callee method is useful for transformations that operate on `CallOpInterface`, and change the callee, e.g., a pass that specialize function, which clone the callee, and change the `CallOpInterface`'s callee to the cloned version. Without such method, transformation would need to understand the implementation for every operations with `CallOpInterface`, and have a type switch to handle them. This review adds a method to set callee for operation with `CallOpInterface`. Reviewed By: gysit, zero9178o Differential Revision: https://reviews.llvm.org/D149763
* [flang][hlfir] Add TODO for polymorphic vector subscripted entitiesJean Perier2023-05-071-0/+10
| | | | | | | | | | | | | | | I removed the barriers a bit fast. Some mold is needed on hlfir.elemental for polymorphic vector subscripted designator (and for parenthesized polymorphic) so that a temporary can be later created. The parenthesized array case may also just used asExpr and that could later use AssignTemporary to deal with this. But the vector subscripted designator case will need to use some new runtime to get some mold allocation done for the temp. Add TODOs in the meantime. Differential Revision: https://reviews.llvm.org/D149970
* Revert "Reland "[CMake] Bumps minimum version to 3.20.0.""Mark de Wever2023-05-063-3/+17
| | | | | | Unfortunatly not all buildbots are updated. This reverts commit ffb807ab5375b3f78df198dc5d4302b3b552242f.
* Reland "[CMake] Bumps minimum version to 3.20.0."Mark de Wever2023-05-063-17/+3
| | | | | | All build bots should be updated now. This reverts commit 44d38022ab29a3156349602733b3459df5beef93.
* [flang] OpenMP allocate directive parse tree fixEthan Luis McDonough2023-05-055-2/+144
| | | | | | | | | | | | | | | | | | | | | | Addresses the same issue as the following abandoned revision: D104391. Rewrite leading declarative allocations so they are nested within their respective executable allocate directive Original: ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPExecutableAllocate After rewriting: ExecutionPartConstruct -> OpenMPExecutableAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D148409 Co-authored-by: Isaac Perry <isaac.perry@arm.com>
* Revert "[flang] OpenMP allocate directive parse tree fix"Ethan Luis McDonough2023-05-055-144/+2
| | | | This reverts commit 597d8563cd66f23d857196bf135a0c513115ece2.
* [flang] OpenMP allocate directive parse tree fixEthan Luis McDonough2023-05-055-2/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | Addresses the same issue as the following abandoned revision: D104391. Rewrite leading declarative allocations so they are nested within their respective executable allocate directive Original: ``` ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPExecutableAllocate ``` After rewriting: ``` ExecutionPartConstruct -> OpenMPExecutableAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate ``` Co-authored-by: Isaac Perry <isaac.perry@arm.com> Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D148409
* Revert "[flang] OpenMP allocate directive parse tree fix"Ethan Luis McDonough2023-05-055-144/+2
| | | | | This reverts commit 5faf45a3d24e603cbc8fe4eb45da386653dae5e5. Once again arcanist stripped the co-author metadata. I'm going to add it to the revision description and try one last time.
* [flang] OpenMP allocate directive parse tree fixEthan Luis McDonough2023-05-055-2/+144
| | | | | | | | | | | | | | | | | | | | | | | | Addresses the same issue as the following abandoned revision: D104391. Rewrite leading declarative allocations so they are nested within their respective executable allocate directive Original: ``` ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPExecutableAllocate ``` After rewriting: ``` ExecutionPartConstruct -> OpenMPExecutableAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate ``` Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D148409
* Revert "[flang] OpenMP allocate directive parse tree fix"Ethan Luis McDonough2023-05-055-144/+2
| | | | | This reverts commit eaf7d97865140a17f13ad77e5dc0216438127094. Arcanist stripped co-author data from initial commit.
* [flang][openacc] Lower host and device clauses to data operand opsValentin Clement2023-05-053-68/+120
| | | | | | | | | | | Update OpenACC update construct lowering to create the data operand operations for host and device clauses. Depends on D149909 Reviewed By: razvanlupusoru, jeanPerier Differential Revision: https://reviews.llvm.org/D149910
* [mlir][openacc] Switch host/device clauses to data operand operationsValentin Clement2023-05-051-0/+1
| | | | | | | | | Introduce acc.update_host and acc.update_device as data operands operation to be used by the acc.update op. Reviewed By: razvanlupusoru, jeanPerier Differential Revision: https://reviews.llvm.org/D149909
* [flang] OpenMP allocate directive parse tree fixEthan Luis McDonough2023-05-055-2/+144
| | | | | | | | | | | | | | | | | | | | | | | | Addresses the same issue as the following abandoned revision: D104391. Rewrite leading declarative allocations so they are nested within their respective executable allocate directive Original: ``` ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPDeclarativeAllocate ExecutionPartConstruct -> OpenMPExecutableAllocate ``` After rewriting: ``` ExecutionPartConstruct -> OpenMPExecutableAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate | ExecutionPartConstruct -> OpenMPDeclarativeAllocate ``` Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D148409
* Revert "[Flang] Change complex divide lowering"Kiran Chandramohan2023-05-055-118/+10
| | | | | | | This reverts commit 1b9d0deb6d53db760a91bcf63c9b2509f95af2bb. Reverting since the signature of the called division functions is not correct.
* [flang][hlfir] Fixed array constructor lowering.Slava Zakharin2023-05-055-23/+244
| | | | | | | | First issue is that the clean-ups were generated after the yield_element operation that must be the terminator. Second issue is that codegen for elemenal operation was not working properly with nested elemental ops. Differential Revision: https://reviews.llvm.org/D149921
* [flang]Zero Initialize simple typesMats Petersson2023-05-054-5/+12
| | | | | | | | | | | | | | Instead of filling uninitialized global variables with "undef", initialize them with 0. Only for Integer, Float or Logical type variables. Complex, user defined data structures, arrays, etc are not supported at this point. This patch fixes the main problem of https://github.com/llvm/llvm-project/issues/62432 Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D149877
* [Flang] Change complex divide loweringKiran Chandramohan2023-05-055-10/+118
| | | | | | | | | | | | | | | | | | | | | | | | | Currently complex division is lowered to a fir.divc operation and the fir.divc is later converted to a sequence of llvm operations to perform complex division, however this causes issues for extreme values when the calculations overflow. This patch changes the lowering of complex division to use the Intrinsic Call functionality to lower into library calls (for single, double, extended and quad precisions) or an MLIR complex dialect division operation (for half and bfloat precisions). Note 1: If the Complex To Standard conversion of division operation matures then we can use it for all precisions. Currently it has the same issues as the conversion of fir.divc. Note 2: A previous patch (D145808) did the same but during conversion of the fir.divc operation. But using function calls at that stage leads to ABI issues since the conversion to LLVM is not aware of the complex target rewrite. Note 3: If the patch is accepted, fir.divc can be removed from FIR. Reviewed By: vzakhari, PeteSteinfeld, DavidTruby Differential Revision: https://reviews.llvm.org/D149546
* [Flang][OpenMP][Sema] More gracefully handle undefined symbol in a no ↵Andrew Gozillon2023-05-053-3/+68
| | | | | | | | | | | | | | | | | | implicit module for declare target Prior to this change, if you define a module as such with a declare target in it: module test_0 implicit none !$omp declare target(no_implicit_materialization_1) end module test_0 The compiler will crash rather than give some form of reasonable diagnostic. This patch attempts to fix that. Reviewers: kiranchandramohan Differential Revision: https://reviews.llvm.org/D149913
* [flang][hlfir] Add ordered assignment pass with TODOsJean Perier2023-05-059-0/+141
| | | | | | | | | | | I plan to implement lowering from parse tree to HLFIR first for forall and where to ease testing of the rewrite pass while writing it. To avoid cryptic errors in ConvertToFir pass about unhandled operations, this patch already defines the pass that will further lower these operations and make it throw clear TODO messages. Differential Revision: https://reviews.llvm.org/D149852
* [flang][hlfir] Add hlfir.forall_index operationJean Perier2023-05-053-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the last piece required to lower Forall (except pointer assignments, where an operation may be needed to deal with bounds remapping). Lowering requires symbols to be mapped to memory SSA values produced by a fir_FortranVariableOpInterface operation. This applies to forall index-values, that are symbols. fir.alloca/fir.store/hlfir.declare are not allowed inside the body of an hlfir.forall that only accept operations with the hlfir_OrderedAssignmentTreeOpInterface so that the forall structure is well defined and easy to transform. Allowing such operations in the forall body would open the doors to generating ill-formed programs where such operation would be used for non index-values. Instead, add an hlfir.forall_index with both required interface to produce a memory address for a forall index. As a bonus, since forall index-value are by nature read-only, the loads of hlfir.forall_index can be canonicalized, which will help simplifying the hlfir.forall nested code (it is unclear we will be able to tell MLIR enough about hlfir.forall and hlfir.where structure so that it could safely do a generic mem-to-reg inside it, and getting rid of read-effect operations will benefit the forall rewrite pass). Differential Revision: https://reviews.llvm.org/D149836
* [flang][openacc] Lower data clause on compute construct to data operand opsValentin Clement2023-05-047-1278/+1524
| | | | | | | | | | | | | | This patch lowers the data clause on the OpenACC compute construct to their corresponding acc data operand operation. The decomposition is the same as in D149673. Note that `private` and `firstprivate` are not lowered to data operand operation as they do not have one and will likely have dedicated design/process. Depends on D149673 Reviewed By: razvanlupusoru, jeanPerier Differential Revision: https://reviews.llvm.org/D149785
* [flang][openacc] Lower data construct operand to data operand operationsValentin Clement2023-05-043-213/+303
| | | | | | | | | | | | | | | | | This patch lowers the data clause on the OpenACC data construct to their corresponding acc data operand operation. The copy clause is decomposed into acc.copyin before and acc.copyout after the acc.data operation. The copyout close is decomposed into acc.create before and acc.copyout after the acc.data operation. The attach clause is decomposed into acc.attach before and acc.detach after the acc.data operation. Depends on D149601 Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D149673
* [flang][openacc] Lower copyout, detach and delete to data exit operationsValentin Clement2023-05-042-199/+288
| | | | | | | | | | | | Add support to lower data exit operations and use it for the copyout, detach and delete clause on the `!$acc exit data` construct. This patch refactor the data entry op creation so most part of the code can be shared with the data exit op. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D149601
* [flang][hlfir] Generate explicit HLFIR type cast for implicit ↵Slava Zakharin2023-05-045-3/+192
| | | | | | | | | | | | | | | logical<->integer conversion. hlfir.assign, in general, ends up calling the Assign runtime that asserts that the types of LHS and RHS match. In case of implicit logical<->integer conversions (allowed as an extension) the operands of hlfir.assign have non-matching types. This change makes sure that the lowering produces explicit type cast (either as a scalar fir.convert or as a hlfir.elemental producing array expression). Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D149765
* [flang][hlfir] lower hlfir.product into fir runtime callJacob Crawley2023-05-042-16/+206
| | | | | | | | | | The shared code for lowering the sum and product operations in flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp have been moved into a new class HlfirReductionIntrinsicConverion. Depends on: D148719 Differential Revision: https://reviews.llvm.org/D149644
* [flang] lower product intrinsic to hlfir.product operationJacob Crawley2023-05-043-7/+149
| | | | | | | | | | | Carries out the initial lowering of the product intrinsic into HLFIR following a similar method to sum, the --use-hlfir-intrinsic-ops flag in test/Lower/HLFIR/expr-box is set to false so that the tests will pass until hlfir.product is lowered into fir.call Depends on: D147624 Differential Revision: https://reviews.llvm.org/D148719
* [flang] add hlfir.product operationJacob Crawley2023-05-044-28/+335
| | | | | | | | | | | | Adds a HLFIR operation for the PRODUCT intrinsic according to the design set out in flang/doc/HighLevelFIR.md Since the PRODUCT intrinsic is essentially identical to SUM in terms of its arguments and result characteristics in the Fortran Standard, the operation definition and subsequent tests also take the same form. Differential Revision: https://reviews.llvm.org/D147624
* [docs] Hide collaboration and include graphs in doxygen docsTimm Bäder2023-05-041-3/+3
| | | | | | | They don't convey any useful information and make the documentation unnecessarily hard to read. Differential Revision: https://reviews.llvm.org/D149641
* [flang]Add test for 2D loop versioning testMats Petersson2023-05-041-0/+105
| | | | | | | | | | | Another test based on review comments added late in the review. This one confirms that the multiplication and addition of the outer index to the inner index and thus form the 2D index. Reviewed By: tblah Differential Revision: https://reviews.llvm.org/D149265
* [Flang][Driver][NFC] Improve -emit-obj unit testsSergio Afonso2023-05-043-40/+13
| | | | | | | | | Instead of looking for the existence of a `ret` instruction after disassembly as a way to check that the right ISA is present in the produced binary, check instead the ELF header of the file. This is a more reliable solution, since the alternative can easily result in false positives. Differential Revision: https://reviews.llvm.org/D149578
* [flang][hlfir] Add assignment mask operationsJean Perier2023-05-046-1/+461
| | | | | | | | | | | | | | | | | | | | | | Add hlfir.forall_mask, hlfir.where, and hlfir.elsewhere operations that are operations that holds (optionally for hlfir.elsewhere) the evaluation of a logical mask that controls the evaluation of nested operations. They allow representing Fortran forall control mask, as well as where and eslewhere statements/constructs. They use the OrderedAssignmentTreeOpInterface since they can all be used inside Forall and their masks should be fully evaluated for all the index-value set induced by parent Forall before any of the nested operations in their body is evaluated. I initially tried making them into a single operation with some attributes to make a difference, but I felt this made the verifier/parser/printer and usages messier/tricky compared to making three distinct operations that represent the three Fortran feature in a vanilla way. Differential Revision: https://reviews.llvm.org/D149754
* [flang][hlfir] Add hlfir.forall and its OrderAssignmentTreeOpInterfaceJean Perier2023-05-046-2/+353
| | | | | | | | | | | | | | | | | | | | | | | This patch adds the hlfir.forall operation and the OrderAssignmentTreeOpInterface that allows representing Fortran forall. It uses regions to keep Fortran expression evaluation independent from each other in the IR. Forall assignments inside hlfir.forall are represented with hlfir.region_assign which also keeps the IR generated for each expressions independently. The goal of this representation is to provide a representation that is straightforward to generate from Fortran parse tree without any analysis, while providing enough structure information so that an optimization pass can decide how to schedule, and save if needed, the evaluations of the Forall and Where expression and statements. It allows the data dependency analysis to be done at the HLFIR level. The OrderAssignmentTreeOpInterface allows ensuring that the Forall/Where tree structure is kept in the IR. It will allow visiting this tree in the IR without hard coding the operation structures in the pass. Differential Revision: https://reviews.llvm.org/D149734
* [flang][OpenMP] Lowering support for atomic captureNimish Mishra2023-05-042-47/+357
| | | | | | | | | | | | | | | | This patch adds lowering support for atomic capture operation. First is created a region (without any operand) for the atomic capture operation. Then based on one of the following configurations... 1. [update-stmt, capture-stmt] 2. [capture-stmt, update-stmt] 3. [capture-stmt, write-stmt] ... the lowering proceeds by creating these individual operations inside the atomic capture's region. Differential Revision: https://reviews.llvm.org/D127272 Reviewed By: kiranchandramohan
* [flang][OpenMP] Lowering support for lastprivate on unstructured sectionsNimish Mishra2023-05-042-37/+74
| | | | | | | | | | | | | | | | | construct This patch adds lowering support for lastprivate privatization on unstructured construct. Generic lastprivate lowering on sections involves creating a if operation on the lexically last section block and updating the lastprivate variable inside it. However, this control flow is not needed if the section construct is lowered as an unstructured construct. Hence, this patch modifies the lowering control flow to not emit an unnecessary scf.if if the section block is lowered as an unstructured construct. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D143077
* [flang][openacc] Add proper TODO for reduction loweringValentin Clement2023-05-031-2/+6
| | | | | | | | | | Reduction clause on loop or compute constructs is not currently lowered but no TODO message was issued. Add a proper TODO so the user is informed. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D149789