059b819e3c
As the allocate-2.c testcase shows, this change isn't 100% backwards compatible, one could have allocate and/or align functions that return an OpenMP allocator handle and previously it would call those functions and now would use those names as keywords for the modifiers. But it allows specify extra alignment requirements for the allocations. 2021-09-22 Jakub Jelinek <jakub@redhat.com> gcc/ * tree.h (OMP_CLAUSE_ALLOCATE_ALIGN): Define. * tree.c (omp_clause_num_ops): Change number of OMP_CLAUSE_ALLOCATE arguments from 2 to 3. * tree-pretty-print.c (dump_omp_clause): Print allocator() around allocate clause allocator and print align if present. * omp-low.c (scan_sharing_clauses): Force allocate_map entry even for omp_default_mem_alloc if align modifier is present. If align modifier is present, use TREE_LIST to encode both allocator and align. (lower_private_allocate, lower_rec_input_clauses, create_task_copyfn): Handle align modifier on allocator clause if present. gcc/c-family/ * c-omp.c (c_omp_split_clauses): Copy over OMP_CLAUSE_ALLOCATE_ALIGN. gcc/c/ * c-parser.c (c_parser_omp_clause_allocate): Parse allocate clause modifiers. gcc/cp/ * parser.c (cp_parser_omp_clause_allocate): Parse allocate clause modifiers. * semantics.c (finish_omp_clauses) <OMP_CLAUSE_ALLOCATE>: Perform semantic analysis of OMP_CLAUSE_ALLOCATE_ALIGN. * pt.c (tsubst_omp_clauses) <case OMP_CLAUSE_ALLOCATE>: Handle also OMP_CLAUSE_ALLOCATE_ALIGN. gcc/testsuite/ * c-c++-common/gomp/allocate-6.c: New test. * c-c++-common/gomp/allocate-7.c: New test. * g++.dg/gomp/allocate-4.C: New test. libgomp/ * testsuite/libgomp.c-c++-common/allocate-2.c: New test. * testsuite/libgomp.c-c++-common/allocate-3.c: New test. |
||
---|---|---|
.. | ||
alloc-1.c | ||
alloc-2.c | ||
alloc-3.c | ||
alloc-4.c | ||
allocate-1.c | ||
allocate-2.c | ||
allocate-3.c | ||
atomic-18.c | ||
atomic-19.c | ||
atomic-20.c | ||
atomic-21.c | ||
cancel-parallel-1.c | ||
cancel-taskgroup-1.c | ||
cancel-taskgroup-2.c | ||
cancel-taskgroup-3.c | ||
cancel-taskgroup-4.c | ||
critical-hint-1.c | ||
critical-hint-2.c | ||
declare_target-1.c | ||
default-1.c | ||
depend-iterator-1.c | ||
depend-iterator-2.c | ||
depend-mutexinout-1.c | ||
depend-mutexinout-2.c | ||
depobj-1.c | ||
display-affinity-1.c | ||
error-1.c | ||
for-1.c | ||
for-1.h | ||
for-2.c | ||
for-2.h | ||
for-3.c | ||
for-4.c | ||
for-5.c | ||
for-6.c | ||
for-7.c | ||
for-8.c | ||
for-9.c | ||
for-10.c | ||
for-11.c | ||
for-12.c | ||
for-13.c | ||
for-14.c | ||
for-15.c | ||
for-16.c | ||
function-not-offloaded-aux.c | ||
function-not-offloaded.c | ||
lastprivate-conditional-1.c | ||
lastprivate-conditional-2.c | ||
lastprivate-conditional-3.c | ||
lastprivate-conditional-4.c | ||
lastprivate-conditional-5.c | ||
lastprivate-conditional-6.c | ||
lastprivate-conditional-7.c | ||
lastprivate-conditional-8.c | ||
lastprivate-conditional-9.c | ||
lastprivate-conditional-10.c | ||
loop-1.c | ||
loop-13.c | ||
loop-14.c | ||
loop-15.c | ||
masked-1.c | ||
master-combined-1.c | ||
monotonic-1.c | ||
monotonic-2.c | ||
nested-parallel-unbalanced.c | ||
nonmonotonic-1.c | ||
nonmonotonic-2.c | ||
nothing-1.c | ||
on_device_arch.h | ||
ordered-4.c | ||
pause-1.c | ||
pause-2.c | ||
pr45784.c | ||
pr64824.c | ||
pr64868.c | ||
pr66199-1.c | ||
pr66199-2.c | ||
pr66199-3.c | ||
pr66199-4.c | ||
pr66199-5.c | ||
pr66199-6.c | ||
pr66199-7.c | ||
pr66199-8.c | ||
pr66199-9.c | ||
pr66199-10.c | ||
pr66199-11.c | ||
pr66199-12.c | ||
pr66199-13.c | ||
pr66199-14.c | ||
pr69389.c | ||
pr81875.c | ||
pr83046.c | ||
pr93515.c | ||
pr94366.c | ||
pr96390.c | ||
ptr-attach-1.c | ||
reduction-1.c | ||
reduction-2.c | ||
reduction-3.c | ||
reduction-4.c | ||
reduction-5.c | ||
reduction-6.c | ||
reduction-16.c | ||
reduction-17.c | ||
refcount-1.c | ||
scope-1.c | ||
simd-1.c | ||
simd-14.c | ||
simd-15.c | ||
simd-16.c | ||
simd-17.c | ||
struct-elem-1.c | ||
struct-elem-2.c | ||
struct-elem-3.c | ||
struct-elem-4.c | ||
struct-elem-5.c | ||
target-1.c | ||
target-2.c | ||
target-10.c | ||
target-13.c | ||
target-40.c | ||
target-41.c | ||
target-42.c | ||
target-45.c | ||
target-in-reduction-1.c | ||
target-in-reduction-2.c | ||
task-detach-1.c | ||
task-detach-2.c | ||
task-detach-3.c | ||
task-detach-4.c | ||
task-detach-5.c | ||
task-detach-6.c | ||
task-detach-7.c | ||
task-detach-8.c | ||
task-detach-9.c | ||
task-detach-10.c | ||
task-detach-11.c | ||
task-detach-12.c | ||
task-detach-13.c | ||
task-reduction-1.c | ||
task-reduction-2.c | ||
task-reduction-3.c | ||
task-reduction-4.c | ||
task-reduction-5.c | ||
task-reduction-6.c | ||
task-reduction-7.c | ||
task-reduction-8.c | ||
task-reduction-9.c | ||
task-reduction-11.c | ||
task-reduction-12.c | ||
task-reduction-13.c | ||
task-reduction-14.c | ||
task-reduction-15.c | ||
task-reduction-16.c | ||
taskgroup-1.c | ||
taskloop-1.c | ||
taskloop-2.c | ||
taskloop-3.c | ||
taskloop-4.c | ||
taskloop-5.c | ||
taskloop-reduction-1.c | ||
taskloop-reduction-2.c | ||
taskloop-reduction-3.c | ||
taskloop-reduction-4.c | ||
taskwait-depend-1.c | ||
udr-1.c | ||
unmap-infinity-2.c | ||
variable-not-offloaded.c |