Open
Description
TODOs for unsupported OpenMP 5.2 features
- conditional modifier for lastprivate [flang][OpenMP] Parse lastprivate modifier, add TODO to lowering #110568
- iterator modifier for affinity, depend, from, map, to (@kparzysz)
- scan directive : [Flang][OpenMP][Sema] Adding parsing and semantic support for scan directive. #102792 @anchuraj
- inscan modifier for reduction (@Leporacanthicus)
- task modifier for reduction clause (@Leporacanthicus)
- in_reduction clause for task and target (@Leporacanthicus)
- task_reduction clause for taskgroup (@Leporacanthicus)
- reduction, in_reduction clause for taskloop (@kaviya2510) [FLANG][OpenMP][Taskloop] - Add testcase for reduction and in_reduction clause in taskloop construct #139704
- close, present, ompx_hold map-type modifiers for map clause (@kparzysz) [flang][OpenMP] Parsing support for map type modifiers #111860
- none parameter for defaultmap clause (Currently caught in Semantics giving an error - leaving as is for now @Leporacanthicus)
- declare mapper directive @Leporacanthicus [Flang][OMP]Add support for DECLARE MAPPER parsing and semantics #115160
- metadirective (@kparzysz)
- [flang][OpenMP] Make parsing of trait properties more context-sensitive #122900
- [flang][OpenMP] Parse WHEN, OTHERWISE, MATCH clauses plus METADIRECTIVE #121817 (approved)
- [flang][OpenMP] Semantic checks for context selectors #123243
- [flang][OpenMP] Parse METADIRECTIVE in specification part #123397 (approved)
- [flang][OpenMP] Handle directive arguments in OmpDirectiveSpecifier #124278
- declare variant directive : ARM @kiranchandramohan WIP [Flang][OpenMP] Add frontend support for declare variant #130578
- collapse of imperfectly nested loops for simd, worksharing, distribute and taskloop. Currently there is a semantics error.
- affinity clause for task (@kparzysz) [flang][OpenMP] Parse AFFINITY clause, lowering not supported yet #113485
- detach clause for task (@NimishMishra): [flang][OpenMP] Add parsing support for Task detach #112312, [mlir][llvm] Translation support for task detach #116601, [flang][OpenMP] Add lowering support for task detach #119128, [Flang] [OpenMP] Add semantic checks for detach clause in task #119172
- cancel construct : support for taskloop (@kiranktp )
- mutexinoutset for depend clause (@kparzysz) [flang][OpenMP] Add frontend support for INOUTSET and MUTEXINOUTSET #114895
- ancestor modifier for device clause of target construct
- depend and nowait clause for taskwait (@Leporacanthicus)
- acq_rel, acquire, release clauses for atomic construct
- depend clause extensions to support iterators and depend objects with depobj construct (@kparzysz) [flang][OpenMP] Parsing support for iterator in DEPEND clause #113622, [flang][OpenMP] Parser support for DEPOBJ plus DEPEND, DESTROY, UPDATE #114074
- Combined constructs master taskloop, parallelmaster, parallel master taskloop, master taskloop simd, parallel master taskloop simd @kiranchandramohan [Flang][OpenMP] Add frontend support for directives involving master #113893
- iterators in map clause and data motion clauses of target update (@kparzysz)
- present argument for defaultmap ( @agozillon )
- align clause on allocate directive : ARM [FLANG][OpenMP]Add support for ALIGN clause on OMP ALLOCATE #120791
- allocator and align modifiers for allocate clause : ARM [Flang][OpenMP]Add tests for align and allocator in allocate clauses #121356
- adjust_args and append_args clauses for declare variant directive : ARM
- dispatch construct : [Flang][OpenMP]Add parsing support for DISPATCH construct #121982 @Leporacanthicus
- Assumption directives : [FLANG][OpenMP]Add frontend support for ASSUME and ASSUMES #120770 @Leporacanthicus
- nothing directive (@kparzysz) [flang][OpenMP] Frontend support for NOTHING directive #120606
- error directive : ARM [flang][OpenMP]Add support for OpenMP ERROR directive #119582
- Loop transformation constructs @kiranchandramohan The parsing of these constructs work and a TODO is emitted, but semantic checks should be updated to allow loop transformation constructs in place of Fortran do loops.
- scope directive @kiranchandramohan Add parser+semantics support for scope construct #113700
- strict modifier for grainsize and num_tasks clause @kiranchandramohan [Flang][OpenMP] Add parser support for grainsize and num_tasks clause #113136
- thread_limit clause for target directive. Frontend and Lowering support is present. Translation support is probably missing (@skatrak).
- has_device_addr clause for target construct. Frontend and Lowering support is present. Translation support is probably missing. (@kparzysz) [flang][OpenMP] Implement HAS_DEVICE_ADDR clause #128568
- interop directive : [Swateesh- AMD] [flang][openmp] Adds Parser and Semantic Support for Interop Construct, and Init and Use Clauses. #120584
- compare, fail clauses : ARM Compare support: [flang][OpenMP]Add parsing and semantics support for ATOMIC COMPARE #117032 and 1False positive: "Undefined or garbage value returned to caller" #18683
- seq_cst clause for flush construct seq_cst is allowed in Flush since OpenMP 5.1. #114072
- inoutset argument for depend clause (@kparzysz) [flang][OpenMP] Add frontend support for INOUTSET and MUTEXINOUTSET #114895
- Allow copyprivate, nowait on the directive (in addition to end directive) (@Thirumalai-Shaktivel, [Flang][OpenMP] Allow copyprivate and nowait on the directive clauses #127769)
- Deprecation of destroy with depobj (@kparzysz) [flang][OpenMP] Deprecation message for DESTROY with no argument #114988
- step modifier for linear. Deprecation (@kparzysz) [flang][OpenMP] Rework LINEAR clause #119278
- Deprecation of modifiers without comma separators (@kparzysz) [flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses #117447
- enter as synonym for to clause in declare target . to clause is deprecated.
- declare mapper directive extension to accept iterator-modifier and the present map-type-modifier (@kparzysz)
- allocators construct. allocate directive for ALLOCATE statement is deprecated : ARM
- dispatch construct has optional end directive : ARM
- otherwise clause as synonym for default on metadirective (@kparzysz) ([flang][OpenMP] Parse WHEN, OTHERWISE, MATCH clauses plus METADIRECTIVE #121817)
- allocate and firstprivate for scope directive : ARM (@Leporacanthicus) [flang][OpenMP]Add TODO checking for scope allocate and firstprivate #116801
- target enter and exit data has default map type
- doacross clause as synonym for depend in some situations (@kparzysz) [flang][OpenMP] Parse DOACROSS clause #115396 [flang][OpenMP] Semantic checks for DOACROSS clause #115397
TODOs for unsupported OpenMP 4.5 features
TODOs for unsupported OpenMP 4.0 features
- declare reduction @Leporacanthicus
Must fix issues from the tracker
A subset of issues from https://github.com/llvm/llvm-project/issues?q=is%3Aopen+is%3Aissue+label%3Aflang%3Aopenmp
- Atomic with array constructor [Flang][OpenMP] ICE with "LLVM ERROR: not implemented" (omp atomic) #104526 @Thirumalai-Shaktivel [Flang] Check if two ArrayConstructor's are Equal #121181
- Atomic write to complex [flang][OpenMP] atomic write on complex #113479 @NimishMishra [mlir][OpenMP] Add __atomic_store to AtomicInfo #121055
- Error when capture-statement described in atomic capture construct contains a different type [flang][OpenMP] llvm-project/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp:8095: OpenMPIRBuilder::InsertPointTy llvm::OpenMPIRBuilder::createAtomicWrite(const llvm::OpenMPIRBuilder::LocationDescription &, llvm::OpenMPIRBuilder::AtomicOpValue &, llvm::Value *, llvm::AtomicOrdering): Assertion `(XElemTy->isFloatingPointTy() || XElemTy->isIntegerTy() || XElemTy->isPointerTy()) && "OMP atomic write expected a scalar type"' failed. #115652 @NimishMishra : [mlir][OpenMP] Add __atomic_store to AtomicInfo #121055
- Runtime segfault when allocatable threadprivate variable is used with copyin [flang][OpenMP] runtime segfault when an allocatable variable is used with copyin #113191 @kaviya2510 : https://github.com/kaviya2510/llvm-project/tree/copyin_allocatable
- Assertion failure using default clause with critical [flang][OpenMP] assertion failure using default clause with critical #112572
- Crash in OpenMPIRBuilder when trying to outline a parallel region with an infinite loop [flang][OpenMP] crash in OpenMPIRBuilder when trying to outline a parallel region with an infinite loop #112884 @tblah
- Problem building GAMESS (delayed privatisation of derived type) [Flang][OpenMP] Compilation error when derived type with procedure pointer appears within private attribute #109727
- dot product inside of omp.parallel (part of cp2k) [flang] compiler crashes in OptimizedBufferizationPass when dot_product is used inside parallel region #116954
- Privatisation with sections ICE [Flang][OpenMP] Assertion `success && "Privatization failed due to existing binding"' failed. (parallel sections directive) #135108 @tblah
- Common block name in omp flush [flang] [OpenMP] Common block name symbol is not found (with the prefix "Internal") #136583 @tblah
- threadprivate with pointer to character [Flang][OpenMP] Assertion `!lenParams.empty()' failed. #108136 @tblah
- [flang][OpenMP] DECLARE SIMD LINEAR implicitly declaring a variable #140754
- [flang][OpenMP] symbol resolution error for DECLARE SIMD UNIFORM #140741
- [flang][OpenMP] Missing pre-determined DSA for static duration variables #140732
- [flang][OpenMP] Lowering of OpenMP construct fails in a procedure with alternate entries #139071
- [Flang][OpenMP] compilation failed with "Basic Block in function '_QQmain' does not have terminator!" #138436 @tblah
- [Flang][OpenMP] Referring to an instruction in another function! #138102
- [Flang][OpenMP] only assertion-enabled flang can reach llvm_unreachable (cancel directive) #133685 @tblah
- [Flang][OpenMP] UNREACHABLE executed at llvm-project/flang/lib/Parser/parse-tree.cpp:297! #133678
- [Flang][OpenMP] Compilation abnormally terminates when the left-hand side of write-statement specified in atomic write construct is a variable of derived type #126451
- [Flang][OpenMP] private clause on target teams directive violates assertion #116428
Must fix issues not in tracker
- Default loop schedule modifier for worksharing-loop constructs without static schedule and ordered clause is nonmonotonic since OpenMP 5.0 @tblah
- Privatization issues in interfacing with OpenMPIRBuilder. https://discourse.llvm.org/t/rfc-openmp-fix-issue-in-mlir-to-llvmir-translation-for-delayed-privatisation/81225. Fixed by @tblah [mlir][OpenMP] rewrite conversion of privatisation for omp.parallel #111844
- Support for deferred task execution @tblah [mlir][OpenMP] Pack task private variables into a heap-allocated context struct #125307
Minor bugs:
- Crash with undeclared variable and
implicit none
: [flang][OpenMP]Flang crashes with implicit none and undeclared variables #131655 - Bad word ordering leads to assert in lowering: [flang][openmp]Incorrect order in openmp line causes assert #131659