summaryrefslogtreecommitdiff
path: root/clang/test/OpenMP/taskloop_reduction_messages.cpp
AgeCommit message (Collapse)Author
2023-07-20[OpenMP][Reduction] Allow PLUS (+) operator on reduction clauses in OMP > 52Fazlay Rabbi
Currently, clang gives an incorrect reduction identifier error for the PLUS operator for OpenMP version > 52. But, PLUS operator is allowed in OpenMP version > 52. This revision fixes this issue and also modified the error messages to show the correct expected operators in the message based on the OpenMP version used (prior to OMP 6.0 and since OMP 6.0). Test Src: void foo() { int a = 0 ; #pragma omp parallel reduction(+:a) ; #pragma omp parallel reduction(-:a) ; } Before this revision: $ clang -fopenmp -fopenmp-version=60 test.c -c test.c:3:34: error: incorrect reduction identifier, expected one of '+', '-', '*', '&', '|', '^', '&&', '||', 'min' or 'max' or declare reduction for type 'int' 3 | #pragma omp parallel reduction(+:a) | ^ test.c:5:34: error: incorrect reduction identifier, expected one of '+', '-', '*', '&', '|', '^', '&&', '||', 'min' or 'max' or declare reduction for type 'int' 5 | #pragma omp parallel reduction(-:a) | ^ 2 errors generated. Wit this revision: $ clang -fopenmp -fopenmp-version=60 test.c -c test.c:5:34: error: incorrect reduction identifier, expected one of '+', '*', '&', '|', '^', '&&', '||', 'min' or 'max' or declare reduction for type 'int' 5 | #pragma omp parallel reduction(-:a) | 1 error generated. Differential Revision: https://reviews.llvm.org/D155635
2023-06-15[OpenMP] Update the default version of OpenMP to 5.1Animesh Kumar
The default version of OpenMP is updated from 5.0 to 5.1 which means if -fopenmp is specified but -fopenmp-version is not specified with clang, the default version of OpenMP is taken to be 5.1. After modifying the Frontend for that, various LIT tests were updated. This patch contains all such changes. At a high level, these are the patterns of changes observed in LIT tests - # RUN lines which mentioned `-fopenmp-version=50` need to kept only if the IR for version 5.0 and 5.1 are different. Otherwise only one RUN line with no version info(i.e. default version) needs to be there. # Test cases of this sort already had the RUN lines with respect to the older default version 5.0 and the version 5.1. Only swapping the version specification flag `-fopenmp-version` from newer version RUN line to older version RUN line is required. # Diagnostics: Remove the 5.0 version specific RUN lines if there was no difference in the Diagnostics messages with respect to the default 5.1. # Diagnostics: In case there was any difference in diagnostics messages between 5.0 and 5.1, mention version specific messages in tests. # If the test contained version specific ifdef's e.g. "#ifdef OMP5" but there were no RUN lines for any other version than 5.X, then bring the code guarded by ifdef's outside and remove the ifdef's. # Some tests had RUN lines for both 5.0 and 5.1 versions, but it is found that the IR for 5.0 is not different from the 5.1, therefore such RUN lines are redundant. So, such duplicated lines are removed. # To generate CHECK lines automatically, use the script llvm/utils/update_cc_test_checks.py Reviewed By: saiislam, ABataev Differential Revision: https://reviews.llvm.org/D129635 (cherry picked from commit 9dd2999907dc791136a75238a6000f69bf67cf4e)
2023-05-18[OpenMP 5.2] Deprecate MINUS(-) operator on 'reduction' clauseFazlay Rabbi
2021-05-11[OpenMP] Use compound operators for reduction combiner if available.Mike Rice
The OpenMP spec seems to require the compound operators be used for +, *, &, |, and ^ reduction. So use these if a class has those operators. If not try the simple operators as we did previously to limit the impact to existing code. Fixes: https://bugs.llvm.org/show_bug.cgi?id=48584 Differential Revision: https://reviews.llvm.org/D101941
2020-05-07[OPENMP]Consider 'omp_null_allocator' as a predefined allocator.Alexey Bataev
Summary: omp.h header file defines omp_null_allocator as a predefined allocator, need to consider it also as a predefined allocator. Reviewers: jdoerfert Subscribers: jholewinski, yaxunl, guansong, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D79186
2020-04-30[OPENMP50]Support 'task' modifier in reduction clauses.Alexey Bataev
Summary: Added basic support for 'task' modifier in the reduction clauses in non-simd parallel and worksharing constructs. Reviewers: jdoerfert Subscribers: yaxunl, guansong, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D78738
2019-07-26[OPENMP]Add support for analysis of reduction variables.Alexey Bataev
Summary: Reduction variables are the variables, for which the private copies must be created in the OpenMP regions. Then they are initialized with the predefined values depending on the reduction operation. After exit from the OpenMP region the original variable is updated using the reduction value and the value of the original reduction variable. Reviewers: NoQ Subscribers: guansong, jdoerfert, caomhin, kkwli0, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65106 llvm-svn: 367116
2019-07-08[OPENMP]Add -Wunintialized to the erroneous tests for future fix PR42392,Alexey Bataev
NFC. llvm-svn: 365334
2019-03-28[OPENMP]Add check for undefined behavior with thread allocators onAlexey Bataev
target and task-based directives. According to OpenMP 5.0, 2.11.4 allocate Clause, Restrictions, For task, taskloop or target directives, allocation requests to memory allocators with the trait access set to thread result in unspecified behavior. Patch introduces a check for omp_thread_mem_alloc predefined allocator on target- and trask-based directives. llvm-svn: 357205
2019-03-27[OPENMP]Initial support for 'allocate' clause.Alexey Bataev
Added parsing/sema analysis of the allocate clause. llvm-svn: 357068
2019-01-04[OpenMP] Refactor const restriction for reductionsJoel E. Denny
As discussed in D56113, this patch refactors the implementation of the const restriction for reductions to reuse a function introduced by D56113. A side effect is that diagnostics sometimes now say "variable" instead of "list item" when a list item is a variable. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D56298 llvm-svn: 350440
2017-12-29[OPENMP] Support for -fopenmp-simd option with compilation of simd loopsAlexey Bataev
only. Added support for -fopenmp-simd option that allows compilation of simd-based constructs without emission of OpenMP runtime calls. llvm-svn: 321560
2017-07-20[OPENMP] Fix DSA processing for member declaration.Alexey Bataev
If the member declaration is captured in the OMPCapturedExprDecl, we may loose data-sharing attribute info for this declaration. Patch fixes this bug. llvm-svn: 308629
2017-07-11[OPENMP] Add restriction for reduction clause in taskloop directives.Alexey Bataev
Added checks for the reduction clauses in the taskloop directives: 1. Only addressable items must be used in reduction clauses. 2. Reduction clauses cannot be used with nogroup clauses. llvm-svn: 307693