aboutsummaryrefslogtreecommitdiff
path: root/libgomp
AgeCommit message (Collapse)AuthorFilesLines
2020-05-23Fixes a hang on an invalid ID in a WAIT statement.Thomas Koenig2-0/+25
gcc/fortran/ChangeLog: 2020-05-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/95191 * libgfortran.h (libgfortran_error_codes): Add LIBERROR_BAD_WAIT_ID. libgfortran/ChangeLog: 2020-05-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/95191 * io/async.c (async_wait_id): Generate error if ID is higher than the highest current ID. * runtime/error.c (translate_error): Handle LIBERROR_BAD_WAIT_ID. libgomp/ChangeLog: 2020-05-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/95191 * testsuite/libgomp.fortran/async_io_9.f90: New test.
2020-05-19openmp: Add basic library allocator support.Jakub Jelinek1-0/+354
This patch adds very basic allocator support (omp_{init,destroy}_allocator, omp_{alloc,free}, omp_[sg]et_default_allocator). The plan is to use memkind (likely dlopened) for high bandwidth memory, but that part isn't implemented yet, probably mlock for pinned memory and see what other options there are for other kinds of memory. For offloading targets, we need to decide if we want to support the dynamic allocators (and on which targets), or if e.g. all we do is at compile time replace omp_alloc/omp_free calls with constexpr predefined allocators with something special. And allocate directive and allocator/uses_allocators clauses are future work too. 2020-05-19 Jakub Jelinek <jakub@redhat.com> * allocator.c: New file.
2020-05-19openmp: Add basic library allocator support.Jakub Jelinek12-5/+450
This patch adds very basic allocator support (omp_{init,destroy}_allocator, omp_{alloc,free}, omp_[sg]et_default_allocator). The plan is to use memkind (likely dlopened) for high bandwidth memory, but that part isn't implemented yet, probably mlock for pinned memory and see what other options there are for other kinds of memory. For offloading targets, we need to decide if we want to support the dynamic allocators (and on which targets), or if e.g. all we do is at compile time replace omp_alloc/omp_free calls with constexpr predefined allocators with something special. And allocate directive and allocator/uses_allocators clauses are future work too. 2020-05-19 Jakub Jelinek <jakub@redhat.com> * omp.h.in (omp_uintptr_t): New typedef. (__GOMP_UINTPTR_T_ENUM): Define. (omp_memspace_handle_t, omp_allocator_handle_t, omp_alloctrait_key_t, omp_alloctrait_value_t, omp_alloctrait_t): New typedefs. (__GOMP_DEFAULT_NULL_ALLOCATOR): Define. (omp_init_allocator, omp_destroy_allocator, omp_set_default_allocator, omp_get_default_allocator, omp_alloc, omp_free): Declare. * libgomp.h (struct gomp_team_state): Add def_allocator field. (gomp_def_allocator): Declare. * libgomp.map (OMP_5.0.1): Export omp_set_default_allocator, omp_get_default_allocator, omp_init_allocator, omp_destroy_allocator, omp_alloc and omp_free. * team.c (gomp_team_start): Copy over ts.def_allocator. * env.c (gomp_def_allocator): New variable. (parse_wait_policy): Adjust function comment. (parse_allocator): New function. (handle_omp_display_env): Print OMP_ALLOCATOR. (initialize_env): Call parse_allocator. * Makefile.am (libgomp_la_SOURCES): Add allocator.c. * allocator.c: New file. * icv.c (omp_set_default_allocator, omp_get_default_allocator): New functions. * testsuite/libgomp.c-c++-common/alloc-1.c: New test. * testsuite/libgomp.c-c++-common/alloc-2.c: New test. * testsuite/libgomp.c-c++-common/alloc-3.c: New test. * Makefile.in: Regenerated.
2020-05-15x86: Also check if -fcf-protection worksH.J. Lu2-0/+8
When defaulting CET run-time support to auto, check if -fcf-protection works. Even if the stage1 GCC doesn't support -fcf-protection, since the final GCC does, CET run-time support will be enabled by default if binutils support CET. config/ PR bootstrap/95147 * cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works when defaulting to auto. libatomic/ PR bootstrap/95147 * configure: Regenerated. libbacktrace/ PR bootstrap/95147 * configure: Regenerated. libgcc/ PR bootstrap/95147 * configure: Regenerated. libgfortran/ PR bootstrap/95147 * configure: Regenerated. libgomp/ PR bootstrap/95147 * configure: Regenerated. libitm/ PR bootstrap/95147 * configure: Regenerated. libobjc/ PR bootstrap/95147 * configure: Regenerated. libphobos/ PR bootstrap/95147 * configure: Regenerated. libquadmath/ PR bootstrap/95147 * configure: Regenerated. libsanitizer/ PR bootstrap/95147 * configure: Regenerated. libssp/ PR bootstrap/95147 * configure: Regenerated. libstdc++-v3/ PR bootstrap/95147 * configure: Regenerated. libvtv/ PR bootstrap/95147 * configure: Regenerated. zlib/ PR bootstrap/95147 * configure: Regenerated.
2020-05-14Removed double ChangeLog entries from previous commit.Thomas Koenig1-8/+0
2020-05-14Add early return for invalid STATUS for close.Thomas Koenig2-0/+32
2020-05-14 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/95119 * io/close.c (close_status): Add CLOSE_INVALID. (st_close): Return early on invalid STATUS parameter. 2020-05-14 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/95119 * testsuite/libgomp.fortran/close_errors_1.f90: New test.
2020-05-14x86: Default CET run-time support to autoH.J. Lu2-2/+6
CET has been added since GCC 8. This patch defaults CET run-time support to auto. It enables CET run-time support if asssembler supports CET instructions and multi-byte NOPs are enabled via SSE2. config/ * cet.m4 (GCC_CET_FLAGS): Change default to auto. gcc/ * configure: Regenerated. libatomic/ * configure: Regenerated. libbacktrace/ * configure: Regenerated. libcc1/ * configure: Regenerated. libcpp/ * configure: Regenerated. libdecnumber/ * configure: Regenerated. libgcc/ * configure: Regenerated. libgfortran/ * configure: Regenerated. libgomp/ * configure: Regenerated. libitm/ * configure: Regenerated. libobjc/ * configure: Regenerated. libquadmath/ * configure: Regenerated. libsanitizer/ * configure: Regenerated. libssp/ * configure: Regenerated. libstdc++-v3/ * configure: Regenerated. libvtv/ * configure: Regenerated. zlib/ * configure: Regenerated.
2020-05-14openmp: Also implicitly mark as declare target to functions mentioned in ↵Jakub Jelinek2-0/+55
target regions OpenMP 5.0 also specifies that functions referenced from target regions (except for target regions with device(ancestor:)) are also implicitly declare target to. This patch implements that. 2020-05-14 Jakub Jelinek <jakub@redhat.com> * function.h (struct function): Add has_omp_target bit. * omp-offload.c (omp_discover_declare_target_fn_r): New function, old renamed to ... (omp_discover_declare_target_tgt_fn_r): ... this. (omp_discover_declare_target_var_r): Call omp_discover_declare_target_tgt_fn_r instead of omp_discover_declare_target_fn_r. (omp_discover_implicit_declare_target): Also queue functions with has_omp_target bit set, for those walk with omp_discover_declare_target_fn_r, for declare target to functions walk with omp_discover_declare_target_tgt_fn_r. gcc/c/ * c-parser.c (c_parser_omp_target): Set cfun->has_omp_target. gcc/cp/ * cp-gimplify.c (cp_genericize_r): Set cfun->has_omp_target. gcc/fortran/ * trans-openmp.c: Include function.h. (gfc_trans_omp_target): Set cfun->has_omp_target. libgomp/ * testsuite/libgomp.c-c++-common/target-40.c: New test.
2020-05-13[Fortran] OpenMP - permit lastprivate in distribute + SIMD fixes (PR94690)Tobias Burnus8-0/+431
gcc/fortran/ 2020-05-13 Tobias Burnus <tobias@codesourcery.com> PR fortran/94690 * openmp.c (OMP_DISTRIBUTE_CLAUSES): Add OMP_CLAUSE_LASTPRIVATE. (gfc_resolve_do_iterator): Skip the private handling for SIMD as that is handled by ME code. * trans-openmp.c (gfc_trans_omp_do): Don't add private/lastprivate for dovar_found == 0, unless !simple. libgomp/ 2020-05-13 Tobias Burnus <tobias@codesourcery.com> PR fortran/94690 * testsuite/libgomp.fortran/pr66199-3.f90: New. * testsuite/libgomp.fortran/pr66199-4.f90: New. * testsuite/libgomp.fortran/pr66199-5.f90: New. * testsuite/libgomp.fortran/pr66199-6.f90: New. * testsuite/libgomp.fortran/pr66199-7.f90: New. * testsuite/libgomp.fortran/pr66199-8.f90: New. * testsuite/libgomp.fortran/pr66199-9.f90: New.
2020-05-12openmp: Implement discovery of implicit declare target to clausesJakub Jelinek2-0/+51
This attempts to implement what the OpenMP 5.0 spec in declare target section says as ammended by the 5.1 changes so far (related to device_type(host)), except that it doesn't have the device(ancestor: ...) handling yet because we do not support it yet, and I've left so far out the except lambda note, because I need that clarified. 2020-05-12 Jakub Jelinek <jakub@redhat.com> * omp-offload.h (omp_discover_implicit_declare_target): Declare. * omp-offload.c: Include context.h. (omp_declare_target_fn_p, omp_declare_target_var_p, omp_discover_declare_target_fn_r, omp_discover_declare_target_var_r, omp_discover_implicit_declare_target): New functions. * cgraphunit.c (analyze_functions): Call omp_discover_implicit_declare_target. * testsuite/libgomp.c/target-39.c: New test.
2020-04-29[OpenACC] Set 'acc_device_current = -1'Thomas Schwinge5-4/+9
There's no point in using value '-3', and even though not directly related, value '-1' does match 'GOMP_DEVICE_ICV'. libgomp/ * config/accel/openacc.f90 (acc_device_current): Set to '-1'. * openacc.f90 (acc_device_current): Likewise. * openacc.h (acc_device_current): Likewise. * openacc_lib.h (acc_device_current): Likewise.
2020-04-29[gcn] Set 'UI_NONE' for 'TARGET_EXCEPT_UNWIND_INFO' [PR94282]Thomas Schwinge2-1/+4
In libgomp offloading testing, this resolves all the 'ld: error: undefined symbol: __gxx_personality_v0' FAILs. gcc/ PR target/94282 * common/config/gcn/gcn-common.c (gcn_except_unwind_info): New function. (TARGET_EXCEPT_UNWIND_INFO): Define. libgomp/ PR target/94282 * testsuite/libgomp.c-c++-common/function-not-offloaded.c: Remove 'dg-allow-blank-lines-in-output'.
2020-04-29[gcn] Use 'radeon' for the environment variable 'ACC_DEVICE_TYPE'Thomas Schwinge18-47/+61
..., per OpenACC 3.0, A.1.2. "AMD GPU Targets". This complements commit 6687d13a87c42dddc7d1c7adade38d31ba0d1401 "Rename acc_device_gcn to acc_device_radeon". libgomp/ * oacc-init.c (get_openacc_name): Handle 'gcn'. * testsuite/lib/libgomp.exp (offload_target_to_openacc_device_type) [amdgcn*]: Return 'radeon'. Adjust all users. (check_effective_target_openacc_amdgcn_accel_present): Rename to... (check_effective_target_openacc_radeon_accel_present): ... this. Adjust all users. (check_effective_target_openacc_amdgcn_accel_selected): Rename to... (check_effective_target_openacc_radeon_accel_selected): ... this. Adjust all users.
2020-04-29Torture testing: 'libgomp.fortran/use_device_ptr-optional-2.f90'Thomas Schwinge2-0/+6
Fix-up for commit a2c26c50310a336361d8129ecdd43d3001d6cb3a (r278046) "Fortran] Support absent optional args with use_device_{ptr,addr}". libgomp/ * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Add 'dg-do run'.
2020-04-23amdgcn: Check HSA return codes [PR94629]Andrew Stubbs2-0/+17
Ensure that the returned status values are not ignored. The old code was not broken, but this is both safer and satisfies static analysis. 2020-04-23 Andrew Stubbs <ams@codesourcery.com> PR other/94629 libgomp/ * plugin/plugin-gcn.c (init_hsa_context): Check return value from hsa_iterate_agents. (GOMP_OFFLOAD_init_device): Check return values from both calls to hsa_agent_iterate_regions.
2020-04-20Add 'dg-do run' to 'libgomp.fortran/target-enter-data-2.F90'Thomas Schwinge2-0/+7
Fix-up for commit af557050fd011a03d21dc26b31959033061a0443 "[OpenMP] Fix 'omp exit data' for Fortran arrays (PR 94635)". libgomp/ PR middle-end/94635 * testsuite/libgomp.fortran/target-enter-data-2.F90: Add 'dg-do run'.
2020-04-20Fix declare copyout in libgomp.oacc-c++/declare-pr94120.CTobias Burnus2-0/+7
Testing on the host does not make sense for 'declare copyout' for a same-scope stack-allocated variable. Once the copyout is done, the variable is gone. Hence, test the variable on the device. This can be revisit after the OpenACC semantic has been fixed; but with that fix, the test PASSes again with devices. PR middle-end/94120 * testsuite/libgomp.oacc-c++/declare-pr94120.C: Fix 'declare copy(out)' test case.
2020-04-17[OpenMP] Fix 'omp exit data' for Fortran arrays (PR 94635)Tobias Burnus2-0/+45
PR middle-end/94635 * gimplify.c (gimplify_scan_omp_clauses): Turn MAP_TO_PSET to MAP_DELETE. PR middle-end/94635 * testsuite/libgomp.fortran/target-enter-data-2.F90: New.
2020-04-13Rename 'libgomp.oacc-c-c++-common/static-dynamic-lifetimes-*' to ↵Thomas Schwinge21-23/+95
'libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-*' [PR92843] Fix-up for commit be9862dd96945772ae0692bc95b37ec6dbcabda0 "Test cases for mixed structured/dynamic data lifetimes with OpenACC [PR92843]": it's "structured", not "static" data lifetimes/reference counters. libgomp/ PR libgomp/92843 * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-1-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-1-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-1.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-1.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-2-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-2-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-2.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-2.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-3-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-3-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-3.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-3.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-4-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-4-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-4.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-4.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-5-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-5-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-5.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-5.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-6-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-6-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-6.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-6.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-7-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-7-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-7.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-7.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-8-lib.c: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-8-lib.c: ... this. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-8.c:: Rename to... * testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-8.c: ... this.
2020-04-10Test cases for mixed structured/dynamic data lifetimes with OpenACC [PR92843]Julian Brown17-0/+821
libgomp/ PR libgomp/92843 * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-1-lib.c: New file. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-2-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-3-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-4-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-5-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-6-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-6.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-7-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-7.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-8-lib.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/static-dynamic-lifetimes-8.c: Likewise.
2020-04-10Add 'dg-do run' to 'libgomp.fortran/target-enter-data-1.f90'Thomas Schwinge2-0/+7
Fix-up for commit 689418b97e5eb6a221871a2439bca3e6283ac579 "libgomp – fix handling of 'target enter data'". libgomp/ * testsuite/libgomp.fortran/target-enter-data-1.f90: Add 'dg-do run'.
2020-04-08[C/C++, OpenACC] Reject vars of different scope in acc declare (PR94120)Tobias Burnus2-0/+62
gcc/c/ PR middle-end/94120 * c-decl.c (c_check_in_current_scope): New function. * c-tree.h (c_check_in_current_scope): Declare it. * c-parser.c (c_parser_oacc_declare): Add check that variables are declared in the same scope as the directive. Fix handling of namespace vars. gcc/cp/ PR middle-end/94120 * paser.c (cp_parser_oacc_declare): Add check that variables are declared in the same scope as the directive. gcc/testsuite/ PR middle-end/94120 * c-c++-common/goacc/declare-pr94120.c: New. * g++.dg/declare-pr94120.C: New. libgomp/testsuite/ PR middle-end/94120 * libgomp.oacc-c++/declare-pr94120.C: New.
2020-04-06libgomp/test: Remove a build sysroot fix regressionMaciej W. Rozycki7-3/+24
Fix a problem with commit c8e759b4215b ("libgomp/test: Fix compilation for build sysroot") that caused a regression in some standalone test environments where testsuite/libgomp-test-support.exp is used, but the compiler is expected to be determined by `[find_gcc]', and set the GCC_UNDER_TEST TCL variable in testsuite/libgomp-site-extra.exp instead. libgomp/ * configure.ac: Add testsuite/libgomp-site-extra.exp to output files. * configure: Regenerate. * testsuite/libgomp-site-extra.exp.in: New file. * testsuite/libgomp-test-support.exp.in (GCC_UNDER_TEST): Remove variable. * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New variable. * testsuite/Makefile.in: Regenerate.
2020-04-03Revert "[nvptx, libgomp] Update pr85381-{2,4}.c test-cases" [PR89713, PR94392]Thomas Schwinge3-2/+31
In response to PR94392 commit 75efe9cb1f8938a713ce540dc3b27bc2afcd3fae "c/94392 - only enable -ffinite-loops for C++", this reverts PR89713 commit 00908992f2a78f213d227aea8dbab014a1361df0, as apparently now again "empty oacc loops are" no longer "removed before expand". libgomp/ PR tree-optimization/89713 PR c/94392 * testsuite/libgomp.oacc-c-c++-common/pr85381-2.c: Again expect 'bar.sync'. * testsuite/libgomp.oacc-c-c++-common/pr85381-4.c: Likewise.
2020-03-31libgomp – fix handling of 'target enter data'Tobias Burnus3-1/+53
* target.c (GOMP_target_enter_exit_data): Handle PSET/MAP_POINTER. * testsuite/libgomp.fortran/target-enter-data-1.f90: New.
2020-03-24Fix OpenMP offload handling for target-link variables for nvptx (PR81689)Tobias Burnus2-3/+5
PR libgomp/81689 * lto.c (offload_handle_link_vars): Propagate TREE_PUBLIC state. PR libgomp/81689 * omp-offload.c (omp_finish_file): Fix target-link handling if targetm_common.have_named_sections is false. PR libgomp/81689 * testsuite/libgomp.c/target-link-1.c: Remove xfail.
2020-03-23libgomp – fix declare target link handling (PR94251)Tobias Burnus2-2/+9
PR libgomp/94251 * target.c (gomp_load_image_to_device): Fix link variable handling.
2020-03-19c++: Fix up handling of captured vars in lambdas in OpenMP clauses [PR93931]Jakub Jelinek2-0/+125
Without the parser.c change we were ICEing on the testcase, because while the uses of the captured vars inside of the constructs were replaced with capture proxy decls, we didn't do that for decls in OpenMP clauses. With that fixed, we don't ICE anymore, but the testcase is miscompiled and FAILs at runtime. This is because the capture proxy decls have DECL_VALUE_EXPR and during gimplification we were gimplifying those to their DECL_VALUE_EXPRs. That is fine for shared vars, but for privatized ones we must not do that. So that is what the cp-gimplify.c changes do. Had to add a DECL_CONTEXT check before calling is_capture_proxy because some VAR_DECLs don't have DECL_CONTEXT set (yet) and is_capture_proxy relies on that being non-NULL always. 2020-03-19 Jakub Jelinek <jakub@redhat.com> PR c++/93931 * parser.c (cp_parser_omp_var_list_no_open): Call process_outer_var_ref on outer_automatic_var_p decls. * cp-gimplify.c (cxx_omp_disregard_value_expr): Return true also for capture proxy decls. * testsuite/libgomp.c++/pr93931.C: New test.
2020-03-19libgomp/testsuite: ignore blank-line output for function-not-offloaded.cTobias Burnus2-0/+6
* testsuite/libgomp.c-c++-common/function-not-offloaded.c: Add dg-allow-blank-lines-in-output.
2020-03-18Fix libgomp.oacc-fortran/atomic_capture-1.f90Tobias Burnus2-4/+32
2020-03-18 Julian Brown <julian@codesourcery.com> Tobias Burnus <tobias@codesourcery.com> * testsuite/libgomp.oacc-fortran/atomic_capture-1.f90: Really make it work concurrently.
2020-03-18libgomp testsuite - disable long double for AMDGCNTobias Burnus3-0/+24
* testsuite/libgomp.oacc-c++/firstprivate-mappings-1.C: Add #define DO_LONG_DOUBLE; set to 1, except for nvidia + gcn. * libgomp.oacc-c-c++-common/firstprivate-mappings-1.c: Likewise. * g++.dg/goacc/firstprivate-mappings-1.C: Only set DO_LONG_DOUBLE if not defined; update comments. * c-c++-common/goacc/firstprivate-mappings-1.c: Likewise.
2020-03-15tree-nested: Fix handling of *reduction clauses with C array sections [PR93566]Jakub Jelinek2-0/+118
tree-nested.c didn't handle C array sections in {,task_,in_}reduction clauses. 2020-03-14 Jakub Jelinek <jakub@redhat.com> PR middle-end/93566 * tree-nested.c (convert_nonlocal_omp_clauses, convert_local_omp_clauses): Handle {,in_,task_}reduction clauses with C/C++ array sections. * testsuite/libgomp.c/pr93566.c: New test.
2020-02-21Adapt libgomp acc_get_property.f90 testFrederik Harwath2-1/+9
The commit r10-6721-g8d1a1cb1b816381bf60cb1211c93b8eba1fe1472 has changed the name of the type that is used for the return value of the Fortran acc_get_property function without adapting the test acc_get_property.f90. 2020-02-21 Frederik Harwath <frederik@codesourcery.com> * testsuite/libgomp.oacc-fortran/acc_get_property.f90: Adapt to changes from 2020-02-19, i.e. use integer(c_size_t) instead of integer(acc_device_property) for the type of the return value of acc_get_property.
2020-02-19libgomp: Fixes + cleanup for OpenACC's Fortran module + openacc_lib.hTobias Burnus6-225/+280
2020-02-19 Tobias Burnus <tobias@codesourcery.com> * .gitattributes: New; whitespace handling for Fortran's openacc_lib.h. * config/accel/openacc.f90 (openacc_kinds): Add acc_device_current. (openacc_internal, acc_on_device_h): Fix argument name; minor cleanup. * libgomp.texi (Enabling OpenACC): No longer mark as experimental. (acc_set_device_num): Fix Fortran argument name, use same name for C. (acc_get_property): Update Fortran interface to post-OpenACC 3.0 corrections; add note about the previous interface and named constant. (OpenACC library and environment variables): Fix two typos. * openacc.f90: Use for all procedures the argument names from the spec as for …_h they are user visible. (openacc_kinds): Rename acc_device_property to acc_device_property_kinds and change value to int32 ; and update users. Re-add acc_device_property for for backward compatibility. (acc_get_property_string_h): Clean up as acc_device_property_kind changed. (acc_get_property_h): Likewise and return c_size_t instead of acc_device_property. (openacc): Also export acc_device_property_kinds. (acc_async_test_h, acc_async_test_all_h, acc_on_device_h, acc_is_present_32_h, acc_is_present_64_h): Simplify logical-return-value handling; check against /= 0 instead of == 1 to match C. * openacc_lib.h: Use for all procedures the argument names from the spec as for …_h they are user visible. Place !GCC$ into the first column to be active also for fixed-form souce form. (acc_device_current, acc_device_property_kind, acc_device_property, acc_property_memory, acc_property_free_memory, acc_property_name, acc_property_vendor, acc_property_driver): New named constants. (acc_get_property, acc_get_property_string): New generic interface.
2020-02-13Add ChangeLog entry for my last commitFrederik Harwath1-0/+13
2020-02-13openmp: ignore nowait if async execution is unsupported [PR93481]Frederik Harwath4-13/+15
An OpenMP "nowait" clause on a target construct currently leads to a call to GOMP_OFFLOAD_async_run in the plugin that is used for offloading at execution time. The nvptx plugin contains only a stub of this function that always produces a fatal error if called. This commit changes the "nowait" implementation to ignore the clause if the executing device's plugin does not implement GOMP_OFFLOAD_async_run. The stub in the nvptx plugin is removed which effectively means that programs containing "nowait" can now be executed with nvptx offloading as if the clause had not been used. This behavior is consistent with the OpenMP specification which says that "[...] execution of the target task *may* be deferred" (emphasis added), cf. OpenMP 5.0, page 172. libgomp/ * plugin/plugin-nvptx.c: Remove GOMP_OFFLOAD_async_run stub. * target.c (gomp_load_plugin_for_device): Make "async_run" loading optional. (gomp_target_task_fn): Assert "devicep->async_run_func". (clear_unsupported_flags): New function to remove unsupported flags (right now only GOMP_TARGET_FLAG_NOWAIT) that can be be ignored. (GOMP_target_ext): Apply clear_unsupported_flags to flags. * testsuite/libgomp.c/target-33.c: Remove xfail for offload_target_nvptx. * testsuite/libgomp.c/target-34.c: Likewise.
2020-02-10Add xfails to libgomp tests target-{33,34}.c, target-link-1.cFrederik Harwath4-0/+18
Add xfails for nvptx offloading because "no GOMP_OFFLOAD_async_run implemented in plugin-nvptx.c" (https://gcc.gnu.org/PR81688) and because "omp target link not implemented for nvptx" (https://gcc.gnu.org/PR81689). libgomp/ * testsuite/libgomp.c/target-33.c: Add xfail for execution on offload_target_nvptx, cf. https://gcc.gnu.org/PR81688. * testsuite/libgomp.c/target-34.c: Likewise. * testsuite/libgomp.c/target-link-1.c: Add xfail for offload_target_nvptx, cf. https://gcc.gnu.org/PR81689.
2020-02-09openmp: Optimize DECL_IN_CONSTANT_POOL vars in target regionsJakub Jelinek2-0/+32
DECL_IN_CONSTANT_POOL are shared and thus don't really get emitted in the BLOCK where they are used, so for OpenMP target regions that have initializers gimplified into copying from them we actually map them at runtime from host to offload devices. This patch instead marks them as "omp declare target", so that they are on the target device from the beginning and don't need to be copied there. 2020-02-09 Jakub Jelinek <jakub@redhat.com> * gimplify.c (gimplify_adjust_omp_clauses_1): Promote DECL_IN_CONSTANT_POOL variables into "omp declare target" to avoid copying them around between host and target. * testsuite/libgomp.c/target-38.c: New test.
2020-02-06openmp: Fix handling of non-addressable shared scalars in parallel nested ↵Jakub Jelinek2-0/+41
inside of target [PR93515] As the following testcase shows, we need to consider even target to be a construct that forces not to use copy in/out for shared on parallel inside of the target. E.g. for parallel nested inside another parallel or host teams, we already avoid copy in/out and we need to treat target the same. 2020-02-06 Jakub Jelinek <jakub@redhat.com> PR libgomp/93515 * omp-low.c (use_pointer_for_field): For nested constructs, also look for map clauses on target construct. (scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily taskreg_nesting_level. * testsuite/libgomp.c-c++-common/pr93515.c: New test.
2020-02-05[libgomp] – Fix check_effective_target_offload_target_nvptx for remote ↵Tobias Burnus2-2/+8
execution * testsuite/lib/libgomp.exp (check_effective_target_offload_target_nvptx): Pass flags as 'options' and not as 'source' argument to libgomp_target_compile.
2020-02-03Remove gfx801 "carrizo" supportAndrew Stubbs2-9/+8
2020-02-03 Andrew Stubbs <ams@codesourcery.com> gcc/ * config.gcc: Remove "carrizo" support. * config/gcn/gcn-opts.h (processor_type): Likewise. * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Likewise. * config/gcn/gcn.opt (gpu_type): Likewise. * config/gcn/t-omp-device: Likewise. libgomp/ * plugin/plugin-gcn.c (EF_AMDGPU_MACH_AMDGCN_GFX801): Remove. (gcn_gfx801_s): Remove. (isa_hsa_name): Remove gfx801. (isa_gcc_name): Remove gfx801/carizzo. (isa_code): Remove gfx801.
2020-02-03[OpenACC] bump version for 2.6 plus libgomp.texi updateTobias Burnus6-70/+207
2020-02-03 Julian Brown <julian@codesourcery.com> Tobias Burnus <tobias@codesourcery.com> gcc/c-family/ * c-cppbuiltin.c (c_cpp_builtins): Update _OPENACC define to 201711. gcc/ * doc/invoke.texi: Update mention of OpenACC version to 2.6. gcc/fortran/ * cpp.c (cpp_define_builtins): Update _OPENACC define to 201711. * intrinsic.texi: Update mentions of OpenACC version to 2.6. * gfortran.texi: Likewise. Remove experimental disclamer for OpenACC. * invoke.texi: Remove experimental disclamer for OpenACC. gcc/testsuite/ * c-c++-common/cpp/openacc-define-3.c: Update expected value for _OPENACC define. * gfortran.dg/openacc-define-3.f90: Likewise. libgomp/ * libgomp.texi (OpenACC Runtime Library Routines): Document *_async and *_finalize variants; document acc_attach and acc_detach; update references from OpenACC 2.0 to 2.6. * openacc.f90 (openacc_version): Update to 201711. * openacc_lib.h (openacc_version): Update to 201711. * testsuite/libgomp.oacc-fortran/openacc_version-1.f: Update expected openacc_version to 201711. * testsuite/libgomp.oacc-fortran/openacc_version-2.f90: Likewise.
2020-01-31[amdgcn] Scale number of threads/workers with VGPR usageKwok Cheung Yeung2-0/+33
2020-01-31 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/ * config/gcn/mkoffload.c (process_asm): Add sgpr_count and vgpr_count to definition of hsa_kernel_description. Parse assembly to find SGPR and VGPR count of kernel and store in hsa_kernel_description. libgomp/ * plugin/plugin-gcn.c (struct hsa_kernel_description): Add sgpr_count and vgpr_count fields. (struct kernel_info): Add a field for a hsa_kernel_description. (run_kernel): Reduce the number of threads/workers if the requested number would require too many VGPRs. (init_basic_kernel_info): Initialize description field with the hsa_kernel_description entry for the kernel.
2020-01-30Skip plugin-{gcn,hsa} for (-m)x32 (PR bootstrap/93409)Tobias Burnus3-5/+12
PR bootstrap/93409 * plugin/configfrag.ac (enable_offload_targets): Skip HSA and GCN plugin besides -m32 also for -mx32. * configure: Regenerate.
2020-01-29Add acc_device_radeon to name_of_acc_device_t functionFrederik Harwath2-0/+4
libgomp/ * oacc-init.c (name_of_acc_device_t): Handle acc_device_radeon. Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
2020-01-29Adjust formatting of acc_get_property testsFrederik Harwath5-49/+60
libgomp/ * testsuite/libgomp.oacc-c-c++-common/acc_get_property.c: Adjust to GNU coding style. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-aux.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-gcn.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-host.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-nvptx.c: Likewise.
2020-01-29Add OpenACC acc_get_property support for AMD GCNFrederik Harwath6-47/+264
Add full support for the OpenACC 2.6 acc_get_property and acc_get_property_string functions to the libgomp GCN plugin. libgomp/ * plugin-gcn.c (struct agent_info): Add fields "name" and "vendor_name" ... (GOMP_OFFLOAD_init_device): ... and init from here. (struct hsa_context_info): Add field "driver_version_s" ... (init_hsa_contest): ... and init from here. (GOMP_OFFLOAD_openacc_get_property): Replace stub with a proper implementation. * testsuite/libgomp.oacc-c-c++-common/acc_get_property.c: Enable test execution for amdgcn and host offloading targets. * testsuite/libgomp.oacc-fortran/acc_get_property.f90: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-aux.c (expect_device_properties): Split function into ... (expect_device_string_properties): ... this new function ... (expect_device_memory): ... and this new function. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-gcn.c: Add test.
2020-01-28Don't allow mixed component and non-component accesses for OpenACC/FortranJulian Brown4-36/+14
gcc/fortran/ * gfortran.h (gfc_symbol): Add comp_mark bitfield. * openmp.c (resolve_omp_clauses): Disallow mixed component and full-derived-type accesses to the same variable within a single directive. libgomp/ * testsuite/libgomp.oacc-fortran/deep-copy-2.f90: Remove test from here. * testsuite/libgomp.oacc-fortran/deep-copy-3.f90: Don't use mixed component/non-component variable refs in a single directive. * testsuite/libgomp.oacc-fortran/classtypes-1.f95: Likewise. gcc/testsuite/ * gfortran.dg/goacc/deep-copy-2.f90: Move test here (from libgomp testsuite). Make a compilation test, and expect rejection of mixed component/non-component accesses. * gfortran.dg/goacc/mapping-tests-1.f90: New test.
2020-01-24Add `--with-toolexeclibdir=' configuration optionMaciej W. Rozycki6-12/+61
Provide means, in the form of a `--with-toolexeclibdir=' configuration option, to override the default installation directory for target libraries, otherwise known as $toolexeclibdir. This is so that it is possible to get newly-built libraries, particularly the shared ones, installed in a common place, so that they can be readily used by the target system as their host libraries, possibly over NFS, without a need to manually copy them over from the currently hardcoded location they would otherwise be installed in. In the presence of the `--enable-version-specific-runtime-libs' option and for configurations building native GCC the option is ignored. config/ * toolexeclibdir.m4: New file. gcc/ * doc/install.texi (Cross-Compiler-Specific Options): Document `--with-toolexeclibdir' option. libada/ * Makefile.in (configure_deps): Add `toolexeclibdir.m4'. * configure.ac: Handle `--with-toolexeclibdir='. * configure: Regenerate. libatomic/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * testsuite/Makefile.in: Regenerate. libffi/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * include/Makefile.in: Regenerate. * man/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. libgcc/ * Makefile.in (configure_deps): Add `toolexeclibdir.m4'. * configure.ac: Handle `--with-toolexeclibdir='. * configure: Regenerate. libgfortran/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libgomp/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * testsuite/Makefile.in: Regenerate. libhsail-rt/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libitm/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * testsuite/Makefile.in: Regenerate. libobjc/ * Makefile.in (aclocal_deps): Add `toolexeclibdir.m4'. * aclocal.m4: Include `toolexeclibdir.m4'. * configure.ac: Handle `--with-toolexeclibdir='. * configure: Regenerate. liboffloadmic/ * plugin/configure.ac: Handle `--with-toolexeclibdir='. * plugin/Makefile.in: Regenerate. * plugin/aclocal.m4: Regenerate. * plugin/configure: Regenerate. * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libphobos/ * m4/druntime.m4: Handle `--with-toolexeclibdir='. * m4/Makefile.in: Regenerate. * libdruntime/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libquadmath/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libsanitizer/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * asan/Makefile.in: Regenerate. * interception/Makefile.in: Regenerate. * libbacktrace/Makefile.in: Regenerate. * lsan/Makefile.in: Regenerate. * sanitizer_common/Makefile.in: Regenerate. * tsan/Makefile.in: Regenerate. * ubsan/Makefile.in: Regenerate. libssp/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. libstdc++-v3/ * acinclude.m4: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * doc/Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * python/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * src/c++11/Makefile.in: Regenerate. * src/c++17/Makefile.in: Regenerate. * src/c++98/Makefile.in: Regenerate. * src/filesystem/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. libvtv/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * testsuite/Makefile.in: Regenerate. zlib/ * configure.ac: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate.
2020-01-24Add missing ChangeLog entry for my last commitFrederik Harwath1-0/+16
libgomp/ChangeLog: Add entry for commit 4bd03ed69bd.