Skip to content
Snippets Groups Projects
  1. Feb 23, 2025
  2. Feb 22, 2025
  3. Feb 12, 2025
  4. Feb 11, 2025
    • Jason Merrill's avatar
      c++: don't default -frange-for-ext-temps in -std=gnu++20 [PR188574] · 556248d7
      Jason Merrill authored
      Since -frange-for-ext-temps has been causing trouble, let's not enable it
      by default in pre-C++23 GNU modes for GCC 15, and also allow disabling it in
      C++23 and up.
      
      	PR c++/188574
      
      gcc/c-family/ChangeLog:
      
      	* c-opts.cc (c_common_post_options): Only enable
      	-frange-for-ext-temps by default in C++23.
      
      gcc/ChangeLog:
      
      	* doc/invoke.texi: Adjust -frange-for-ext-temps documentation.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp23/range-for3.C: Use -frange-for-ext-temps.
      	* g++.dg/cpp23/range-for4.C: Adjust expected result.
      
      libgomp/ChangeLog:
      
      	* testsuite/libgomp.c++/range-for-4.C: Adjust expected result.
      556248d7
  5. Feb 08, 2025
  6. Feb 07, 2025
    • Tobias Burnus's avatar
      [GCN] Handle generic ISA names in libgomp's plugin-gcn.c · 8561e4e2
      Tobias Burnus authored
      libgomp/ChangeLog:
      
      	* plugin/plugin-gcn.c (ELFABIVERSION_AMDGPU_HSA_V6,
      	EF_AMDGPU_GENERIC_VERSION_V, EF_AMDGPU_GENERIC_VERSION_OFFSET,
      	GET_GENERIC_VERSION): New #define.
      	(elf_gcn_isa_is_generic): New.
      	(isa_matches_agent): Accept all generic code objects on the first
      	go; extend the diagnostic and handle runtime-failed case.
      	(create_and_finalize_hsa_program): Call it also after loading
      	the code failed, pass the status.
      8561e4e2
  7. Jan 31, 2025
  8. Jan 30, 2025
    • Sandra Loosemore's avatar
      OpenMP: Update documentation of metadirective implementation status. · 4e6fd85b
      Sandra Loosemore authored
      libgomp/ChangeLog
      	* libgomp.texi (OpenMP 5.0): Mark metadirective and declare variant
      	as implemented.
      	(OpenMP 5.1): Mark target_device as supported.
      	Add changed interaction between declare target and OpenMP context
      	and dynamic selector support.
      	(OpenMP 5.2): Mark otherwise clause as supported, note that
      	default is also still accepted.
      4e6fd85b
    • Sandra Loosemore's avatar
      OpenMP: Fortran support for metadirectives and dynamic selectors · 8fbccdb3
      Sandra Loosemore authored
      
      gcc/fortran/ChangeLog
      	PR middle-end/112779
      	PR middle-end/113904
      	* decl.cc (gfc_match_end): Handle COMP_OMP_BEGIN_METADIRECTIVE and
      	COMP_OMP_METADIRECTIVE.
      	* dump-parse-tree.cc (show_omp_node): Handle EXEC_OMP_METADIRECTIVE.
      	(show_code_node): Likewise.
      	* gfortran.h (enum gfc_statement): Add ST_OMP_METADIRECTIVE,
      	ST_OMP_BEGIN_METADIRECTIVE, and ST_OMP_END_METADIRECTIVE.
      	(struct gfc_omp_clauses): Rename target_first_st_is_teams to
      	target_first_st_is_teams_or_meta.
      	(struct gfc_omp_variant): New.
      	(gfc_get_omp_variant): New.
      	(struct gfc_st_label): Add omp_region field.
      	(enum gfc_exec_op): Add EXEC_OMP_METADIRECTIVE.
      	(struct gfc_code): Add omp_variants fields.
      	(gfc_free_omp_variants): Declare.
      	(match_omp_directive): Declare.
      	(is_omp_declarative_stmt): Declare.
      	* io.cc (format_asterisk): Adjust initializer.
      	* match.h (gfc_match_omp_begin_metadirective): Declare.
      	(gfc_match_omp_metadirective): Declare.
      	* openmp.cc (gfc_omp_directives): Uncomment metadirective.
      	(gfc_match_omp_eos): Adjust to match context selectors.
      	(gfc_free_omp_variants): New.
      	(gfc_match_omp_clauses): Remove context_selector parameter and adjust
      	to use gfc_match_omp_eos instead.
      	(match_omp): Adjust call to gfc_match_omp_clauses.
      	(gfc_match_omp_context_selector): Add metadirective_p parameter and
      	adjust error-checking.  Adjust matching of simd clauses.
      	(gfc_match_omp_context_selector_specification): Adjust parameters
      	so it can be used for metadirective as well as declare variant.
      	(match_omp_metadirective): New.
      	(gfc_match_omp_begin_metadirective): New.
      	(gfc_match_omp_metadirective): New.
      	(resolve_omp_metadirective): New.
      	(resolve_omp_target): Handle metadirectives.
      	(gfc_resolve_omp_directive): Handle EXEC_OMP_METADIRECTIVE.
      	* parse.cc (gfc_matching_omp_context_selector): New.
      	(gfc_in_omp_metadirective_body): New.
      	(gfc_omp_region_count): New.
      	(decode_omp_directive): Handle ST_OMP_BEGIN_METADIRECTIVE and
      	ST_OMP_METADIRECTIVE.
      	(match_omp_directive): New.
      	(case_omp_structured_block): Define.
      	(case_omp_do): Define.
      	(gfc_ascii_statement): Handle ST_OMP_BEGIN_METADIRECTIVE,
      	ST_OMP_END_METADIRECTIVE, and ST_OMP_METADIRECTIVE.
      	(accept_statement):  Handle ST_OMP_METADIRECTIVE and
      	ST_OMP_BEGIN_METADIRECTIVE.
      	(gfc_omp_end_stmt): New, split from...
      	(parse_omp_do): ...here, and...
      	(parse_omp_structured_block): ...here.  Handle metadirectives,
      	plus "allocate", "atomic", and "dispatch" which were missing.
      	(parse_omp_oacc_atomic): Handle "end metadirective".
      	(parse_openmp_allocate_block): Likewise.
      	(parse_omp_dispatch): Likewise.
      	(parse_omp_metadirective_body): New.
      	(parse_executable): Handle metadirective.  Use new case macros
      	defined above.
      	(gfc_parse_file): Initialize metadirective state.
      	(is_omp_declarative_stmt): New.
      	* parse.h (enum gfc_compile_state): Add COMP_OMP_METADIRECTIVE
      	and COMP_OMP_BEGIN_METADIRECTIVE.
      	(gfc_omp_end_stmt): Declare.
      	(gfc_matching_omp_context_selector): Declare.
      	(gfc_in_omp_metadirective_body): Declare.
      	(gfc_omp_metadirective_region_count): Declare.
      	* resolve.cc (gfc_resolve_code): Handle EXEC_OMP_METADIRECTIVE.
      	* st.cc (gfc_free_statement): Likewise.
      	* symbol.cc (compare_st_labels): Handle labels within a metadirective
      	body.
      	(gfc_get_st_label): Likewise.
      	* trans-decl.cc (gfc_get_label_decl): Encode the metadirective region
      	in the label_name.
      	* trans-openmp.cc (gfc_trans_omp_directive): Handle
      	EXEC_OMP_METADIRECTIVE.
      	(gfc_trans_omp_set_selector): New, split/adapted from code....
      	(gfc_trans_omp_declare_variant): ...here.
      	(gfc_trans_omp_metadirective): New.
      	* trans-stmt.h 	(gfc_trans_omp_metadirective): Declare.
      	* trans.cc (trans_code): Handle EXEC_OMP_METADIRECTIVE.
      
      gcc/testsuite/ChangeLog
      	PR middle-end/112779
      	PR middle-end/113904
      	* gfortran.dg/gomp/metadirective-1.f90: New.
      	* gfortran.dg/gomp/metadirective-10.f90: New.
      	* gfortran.dg/gomp/metadirective-11.f90: New.
      	* gfortran.dg/gomp/metadirective-12.f90: New.
      	* gfortran.dg/gomp/metadirective-13.f90: New.
      	* gfortran.dg/gomp/metadirective-2.f90: New.
      	* gfortran.dg/gomp/metadirective-3.f90: New.
      	* gfortran.dg/gomp/metadirective-4.f90: New.
      	* gfortran.dg/gomp/metadirective-5.f90: New.
      	* gfortran.dg/gomp/metadirective-6.f90: New.
      	* gfortran.dg/gomp/metadirective-7.f90: New.
      	* gfortran.dg/gomp/metadirective-8.f90: New.
      	* gfortran.dg/gomp/metadirective-9.f90: New.
      	* gfortran.dg/gomp/metadirective-construct.f90: New.
      	* gfortran.dg/gomp/metadirective-no-score.f90: New.
      	* gfortran.dg/gomp/pure-1.f90 (func_metadirective): New.
      	(func_metadirective_2): New.
      	(func_metadirective_3): New.
      	* gfortran.dg/gomp/pure-2.f90 (func_metadirective): Delete.
      
      libgomp/ChangeLog
      	PR middle-end/112779
      	PR middle-end/113904
      	* testsuite/libgomp.fortran/metadirective-1.f90: New.
      	* testsuite/libgomp.fortran/metadirective-2.f90: New.
      	* testsuite/libgomp.fortran/metadirective-3.f90: New.
      	* testsuite/libgomp.fortran/metadirective-4.f90: New.
      	* testsuite/libgomp.fortran/metadirective-5.f90: New.
      	* testsuite/libgomp.fortran/metadirective-6.f90: New.
      
      Co-Authored-By: default avatarKwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: default avatarSandra Loosemore <sandra@codesourcery.com>
      Co-Authored-By: default avatarTobias Burnus <tobias@codesourcery.com>
      Co-Authored-By: default avatarPaul-Antoine Arras <pa@codesourcery.com>
      8fbccdb3
    • Tobias Burnus's avatar
      OpenMP: append_args clause fixes + Fortran support · bea86e82
      Tobias Burnus authored
      This fixes a large number of smaller and larger issues with the append_args
      clause to 'declare variant' and adds Fortran support for it; it also contains
      a larger number of testcases.
      
      In particular, for Fortran, it also handles passing allocatable, pointer,
      optional arguments to an interop dummy argument with or without value
      attribute.  And it changes the internal representation such that dumping the
      tree does not lead to an ICE.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (c_finish_omp_declare_variant): Modify how
      	append_args is saved internally.
      
      gcc/cp/ChangeLog:
      
      	* parser.cc (cp_finish_omp_declare_variant): Modify how append_args
      	is saved internally.
      	* pt.cc (tsubst_attribute): Likewise.
      	(tsubst_omp_clauses): Remove C_ORT_OMP_DECLARE_SIMD from interop
      	handling as no longer called for it.
      	* decl.cc (omp_declare_variant_finalize_one): Update append_args
      	changes; fixes for ADL input.
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (gfc_omp_declare_variant): Add append_args_list.
      	* openmp.cc (gfc_parser_omp_clause_init_modifiers): New;
      	splitt of from ...
      	(gfc_match_omp_init): ... here; call it.
      	(gfc_match_omp_declare_variant): Update to handle append_args
      	clause; some syntax handling fixes.
      	* trans-openmp.cc (gfc_trans_omp_declare_variant): Handle
      	append_args clause; add some diagnostic.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_call_expr): For OpenMP's append_args clause
      	processed by 'omp dispatch', update for internal-representation
      	changes; fix handling of hidden arguments, add some comments and
      	handle Fortran's value dummy and optional/pointer/allocatable actual
      	args.
      
      libgomp/ChangeLog:
      
      	* libgomp.texi (Impl. Status): Update for accumpulated changes
      	related to 'dispatch' and interop.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/append-args-1.c: Update dg-*.
      	* c-c++-common/gomp/append-args-3.c: Likewise.
      	* g++.dg/gomp/append-args-1.C: Likewise.
      	* gfortran.dg/gomp/adjust-args-1.f90: Likewise.
      	* gfortran.dg/gomp/adjust-args-3.f90: Likewise.
      	* gfortran.dg/gomp/declare-variant-2.f90: Likewise.
      	* c-c++-common/gomp/append-args-6.c: New test.
      	* c-c++-common/gomp/append-args-7.c: New test.
      	* c-c++-common/gomp/append-args-8.c: New test.
      	* c-c++-common/gomp/append-args-9.c: New test.
      	* g++.dg/gomp/append-args-4.C: New test.
      	* g++.dg/gomp/append-args-5.C: New test.
      	* g++.dg/gomp/append-args-6.C: New test.
      	* g++.dg/gomp/append-args-7.C: New test.
      	* gcc.dg/gomp/append-args-1.c: New test.
      	* gfortran.dg/gomp/append_args-1.f90: New test.
      	* gfortran.dg/gomp/append_args-2.f90: New test.
      	* gfortran.dg/gomp/append_args-3.f90: New test.
      	* gfortran.dg/gomp/append_args-4.f90: New test.
      bea86e82
  9. Jan 17, 2025
  10. Jan 16, 2025
    • Sandra Loosemore's avatar
      OpenMP: Shared metadirective/dynamic selector tests for C and C++ · fdeceba5
      Sandra Loosemore authored
      
      gcc/testsuite/ChangeLog
      	* c-c++-common/gomp/adjust-args-6.c: New.
      	* c-c++-common/gomp/attrs-metadirective-1.c: New.
      	* c-c++-common/gomp/attrs-metadirective-2.c: New.
      	* c-c++-common/gomp/attrs-metadirective-3.c: New.
      	* c-c++-common/gomp/attrs-metadirective-4.c: New.
      	* c-c++-common/gomp/attrs-metadirective-5.c: New.
      	* c-c++-common/gomp/attrs-metadirective-6.c: New.
      	* c-c++-common/gomp/attrs-metadirective-7.c: New.
      	* c-c++-common/gomp/attrs-metadirective-8.c: New.
      	* c-c++-common/gomp/declare-variant-arg-exprs.c: New.
      	* c-c++-common/gomp/declare-variant-dynamic-1.c: New.
      	* c-c++-common/gomp/declare-variant-dynamic-2.c: New.
      	* c-c++-common/gomp/metadirective-1.c: New.
      	* c-c++-common/gomp/metadirective-2.c: New.
      	* c-c++-common/gomp/metadirective-3.c: New.
      	* c-c++-common/gomp/metadirective-4.c: New.
      	* c-c++-common/gomp/metadirective-5.c: New.
      	* c-c++-common/gomp/metadirective-6.c: New.
      	* c-c++-common/gomp/metadirective-7.c: New.
      	* c-c++-common/gomp/metadirective-8.c: New.
      	* c-c++-common/gomp/metadirective-construct.c: New.
      	* c-c++-common/gomp/metadirective-device.c: New.
      	* c-c++-common/gomp/metadirective-no-score.c: New.
      	* c-c++-common/gomp/metadirective-target-device-1.c: New.
      	* c-c++-common/gomp/metadirective-target-device-2.c: New.
      
      libgomp/ChangeLog
      	* testsuite/libgomp.c-c++-common/metadirective-1.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-2.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-3.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-4.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-5.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-late-1.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-late-2.c: New.
      	* testsuite/libgomp.c-c++-common/metadirective-target-device.c: New.
      
      Co-Authored-By: default avatarKwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: default avatarSandra Loosemore <sandra@codesourcery.com>
      fdeceba5
    • Sandra Loosemore's avatar
      OpenMP: C++ support for metadirectives and dynamic selectors. · 677e452e
      Sandra Loosemore authored
      
      Additional shared C/C++ testcases are included in a subsequent patch in this
      series.
      
      gcc/cp/ChangeLog
      	PR middle-end/112779
      	PR middle-end/113904
      	* cp-tree.h (struct saved_scope): Add new field
      	x_processing_omp_trait_property_expr.
      	(processing_omp_trait_property_expr): New.
      	* parser.cc (cp_parser_skip_to_end_of_block_or_statement): Add
      	metadirective_p	parameter and handle skipping over the parentheses
      	in a "for" statement.
      	(struct omp_metadirective_parse_data): New.
      	(mangle_metadirective_region_label): New.
      	(cp_parser_label_for_labeled_statement): Mangle label names in a
      	metadirective body.
      	(cp_parser_jump_statement): Likewise.
      	(cp_parser_omp_context_selector): Allow arbitrary expressions in
      	device_num and condition properties.
      	(cp_parser_omp_assumption_clauses): Handle C_OMP_DIR_META.
      	(analyze_metadirective_body): New.
      	(cp_parser_omp_metadirective): New.
      	(cp_parser_pragma): Handle PRAGMA_OMP_METADIRECTIVE.
      	* parser.h (struct cp_parser): Add omp_metadirective_state field.
      	* pt.cc (tsubst_omp_context_selector): New.
      	(tsubst_stmt): Handle OMP_METADIRECTIVE.
      	* semantics.cc (finish_id_expression_1): Don't diagnose use of
      	parameter outside function body in dynamic selector expressions here.
      
      	gcc/testsuite/
      	PR middle-end/112779
      	PR middle-end/113904
      	* c-c++-common/gomp/declare-variant-2.c: Adjust output for C++.
      	* g++.dg/gomp/declare-variant-class-1.C: New.
      	* g++.dg/gomp/declare-variant-class-2.C: New.
      	* g++.dg/gomp/metadirective-template-1.C: New.
      
      	libgomp/
      	PR middle-end/112779
      	PR middle-end/113904
      	* testsuite/libgomp.c++/metadirective-template-1.C: New.
      	* testsuite/libgomp.c++/metadirective-template-2.C: New.
      	* testsuite/libgomp.c++/metadirective-template-3.C: New.
      
      Co-Authored-By: default avatarKwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: default avatarSandra Loosemore <sandra@codesourcery.com>
      677e452e
  11. Jan 14, 2025
  12. Jan 13, 2025
  13. Jan 10, 2025
  14. Jan 09, 2025
    • Thomas Schwinge's avatar
      nvptx: PTX 'alloca' for '-mptx=7.3'+, '-march=sm_52'+ [PR65181] · 3861d362
      Thomas Schwinge authored
      ..., and use it for '-mno-soft-stack': PTX "native" stacks.
      
      	PR target/65181
      	gcc/
      	* config/nvptx/nvptx.cc (nvptx_get_drap_rtx): Handle
      	'!TARGET_SOFT_STACK'.
      	* config/nvptx/nvptx.md (define_c_enum "unspec"): Add
      	'UNSPEC_STACKSAVE', 'UNSPEC_STACKRESTORE'.
      	(define_expand "allocate_stack", define_expand "save_stack_block")
      	(define_expand "save_stack_block"): Handle '!TARGET_SOFT_STACK',
      	PTX 'alloca'.
      	(define_insn "@nvptx_alloca_<mode>")
      	(define_insn "@nvptx_stacksave_<mode>")
      	(define_insn "@nvptx_stackrestore_<mode>"): New.
      	* doc/invoke.texi (Nvidia PTX Options): Update '-msoft-stack',
      	'-mno-soft-stack'.
      	* doc/sourcebuild.texi (nvptx-specific attributes): Document
      	'nvptx_runtime_alloca_ptx'.
      	(Add Options): Document 'nvptx_alloca_ptx'.
      	gcc/testsuite/
      	* gcc.target/nvptx/alloca-1.c: Evolve into...
      	* gcc.target/nvptx/alloca-1-O0.c: ... this, ...
      	* gcc.target/nvptx/alloca-1-O1.c: ... this, and...
      	* gcc.target/nvptx/alloca-1-sm_30.c: ... this.
      	* gcc.target/nvptx/vla-1.c: Evolve into...
      	* gcc.target/nvptx/vla-1-O0.c: ... this, ...
      	* gcc.target/nvptx/vla-1-O1.c: ... this, and...
      	* gcc.target/nvptx/vla-1-sm_30.c: ... this.
      	* gcc.c-torture/execute/pr36321.c: Adjust.
      	* gcc.target/nvptx/__builtin_alloca_0-1-O0.c: Likewise.
      	* gcc.target/nvptx/__builtin_alloca_0-1-O1.c: Likewise.
      	* gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1.c:
      	Likewise.
      	* gcc.target/nvptx/softstack.c: Likewise.
      	* gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1-sm_30.c:
      	New.
      	* gcc.target/nvptx/alloca-2-O0.c: Likewise.
      	* gcc.target/nvptx/alloca-3-O1.c: Likewise.
      	* gcc.target/nvptx/alloca-4-O3.c: Likewise.
      	* gcc.target/nvptx/alloca-5.c: Likewise.
      	* lib/target-supports.exp (check_effective_target_alloca): Adjust.
      	(check_nvptx_default_ptx_isa_target_architecture_at_least)
      	(check_nvptx_runtime_ptx_isa_target_architecture_at_least)
      	(check_effective_target_nvptx_runtime_alloca_ptx)
      	(add_options_for_nvptx_alloca_ptx): New.
      	libgomp/
      	* fortran.c (omp_get_device_from_uid_): Adjust.
      	* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Likewise.
      3861d362
  15. Jan 08, 2025
  16. Jan 07, 2025
    • Tobias Burnus's avatar
      libgomp.texi: Minor update to omp_get_num_devices/omp_get_initial_device · d3ccd89f
      Tobias Burnus authored
      libgomp/ChangeLog:
      
      	* libgomp.texi (OpenMP 6.0): Fix typo.
      	(omp_get_default_device): Update the wording as the value
      	returned by omp_get_initial_device is now ambiguous.
      	(omp_get_num_devices): Minor wording tweak.
      	(omp_get_initial_device): Note that the function may also
      	return omp_initial_device since OpenMP 6.
      d3ccd89f
  17. Jan 04, 2025
  18. Jan 03, 2025
  19. Jan 02, 2025
    • Paul-Antoine Arras's avatar
      OpenMP: Fortran front-end support for dispatch + adjust_args · bca8b13b
      Paul-Antoine Arras authored
      This patch adds support for the `dispatch` construct and the `adjust_args`
      clause to the Fortran front-end.
      
      Handling of `adjust_args` across translation units is missing due to PR115271.
      
      Minor modifications to the C++ FE and the ME are also folded into this patch as
      a side effect of the Fortran work.
      
      gcc/c-family/ChangeLog:
      
      	* c-attribs.cc: (c_common_gnu_attributes): Rename "omp declare variant
      	variant adjust_args" into "omp declare variant variant args" to also
      	accommodate append_args.
      
      gcc/cp/ChangeLog:
      
      	* parser.cc (cp_parser_omp_dispatch): Handle INDIRECT_REF.
      
      gcc/fortran/ChangeLog:
      
      	* dump-parse-tree.cc (show_omp_clauses): Handle novariants and nocontext
      	clauses.
      	(show_omp_node): Handle EXEC_OMP_DISPATCH.
      	(show_code_node): Likewise.
      	* frontend-passes.cc (gfc_code_walker): Handle novariants and nocontext.
      	* gfortran.h (enum gfc_statement): Add ST_OMP_DISPATCH.
      	(symbol_attribute): Add omp_declare_variant_need_device_ptr.
      	(gfc_omp_clauses): Add novariants and nocontext.
      	(gfc_omp_declare_variant): Add need_device_ptr_arg_list.
      	(enum gfc_exec_op): Add EXEC_OMP_DISPATCH.
      	* match.h (gfc_match_omp_dispatch): Declare.
      	* openmp.cc (gfc_free_omp_clauses): Free novariants and nocontext
      	clauses.
      	(gfc_free_omp_declare_variant_list): Free need_device_ptr_arg_list
      	namelist.
      	(enum omp_mask2): Add OMP_CLAUSE_NOVARIANTS and OMP_CLAUSE_NOCONTEXT.
      	(gfc_match_omp_clauses): Handle OMP_CLAUSE_NOVARIANTS and
      	OMP_CLAUSE_NOCONTEXT.
      	(OMP_DISPATCH_CLAUSES): Define.
      	(gfc_match_omp_dispatch): New function.
      	(gfc_match_omp_declare_variant): Parse adjust_args.
      	(resolve_omp_clauses): Handle adjust_args, novariants and nocontext.
      	Adjust handling of OMP_LIST_IS_DEVICE_PTR.
      	(icode_code_error_callback): Handle EXEC_OMP_DISPATCH.
      	(omp_code_to_statement): Likewise.
      	(resolve_omp_dispatch): New function.
      	(gfc_resolve_omp_directive): Handle EXEC_OMP_DISPATCH.
      	* parse.cc (decode_omp_directive): Match dispatch.
      	(next_statement): Handle ST_OMP_DISPATCH.
      	(gfc_ascii_statement): Likewise.
      	(parse_omp_dispatch): New function.
      	(parse_executable): Handle ST_OMP_DISPATCH.
      	* resolve.cc (gfc_resolve_blocks): Handle EXEC_OMP_DISPATCH.
      	* st.cc (gfc_free_statement): Likewise.
      	* trans-decl.cc (create_function_arglist): Declare.
      	(gfc_get_extern_function_decl): Call it.
      	* trans-openmp.cc (gfc_trans_omp_clauses): Handle novariants and
      	nocontext.
      	(replace_omp_dispatch_call): New function.
      	(gfc_trans_omp_dispatch): New function.
      	(gfc_trans_omp_directive): Handle EXEC_OMP_DISPATCH.
      	(gfc_trans_omp_declare_variant): Handle adjust_args.
      	* trans.cc (trans_code): Handle EXEC_OMP_DISPATCH:.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_call_expr): Fix handling of need_device_ptr for
      	type(c_ptr). Fix handling of nested function calls in a dispatch region.
      	(find_ifn_gomp_dispatch): Return the IFN without stripping it.
      	(gimplify_omp_dispatch): Keep IFN_GOMP_DISPATCH until
      	gimplify_call_expr.
      
      libgomp/ChangeLog:
      	* testsuite/libgomp.fortran/declare-variant-2-aux.f90: New test.
      	* testsuite/libgomp.fortran/declare-variant-2.f90: New test (xfail).
      	* testsuite/libgomp.fortran/dispatch-1.f90: New test.
      	* testsuite/libgomp.fortran/dispatch-2.f90: New test.
      	* testsuite/libgomp.fortran/dispatch-3.f90: New test.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/gomp/dispatch-3.C: Update scan dumps.
      	* gfortran.dg/gomp/declare-variant-2.f90: Update dg-error.
      	* gfortran.dg/gomp/adjust-args-1.f90: New test.
      	* gfortran.dg/gomp/adjust-args-2.f90: New test.
      	* gfortran.dg/gomp/adjust-args-2a.f90: New test.
      	* gfortran.dg/gomp/adjust-args-3.f90: New test.
      	* gfortran.dg/gomp/adjust-args-4.f90: New test.
      	* gfortran.dg/gomp/adjust-args-5.f90: New test.
      	* gfortran.dg/gomp/adjust-args-6.f90: New test.
      	* gfortran.dg/gomp/adjust-args-7.f90: New test.
      	* gfortran.dg/gomp/adjust-args-8.f90: New test.
      	* gfortran.dg/gomp/adjust-args-9.f90: New test.
      	* gfortran.dg/gomp/dispatch-1.f90: New test.
      	* gfortran.dg/gomp/dispatch-2.f90: New test.
      	* gfortran.dg/gomp/dispatch-3.f90: New test.
      	* gfortran.dg/gomp/dispatch-4.f90: New test.
      	* gfortran.dg/gomp/dispatch-5.f90: New test.
      	* gfortran.dg/gomp/dispatch-6.f90: New test.
      	* gfortran.dg/gomp/dispatch-7.f90: New test.
      	* gfortran.dg/gomp/dispatch-8.f90: New test.
      	* gfortran.dg/gomp/dispatch-9.f90: New test.
      	* gfortran.dg/gomp/dispatch-9a.f90: New test.
      	* gfortran.dg/gomp/dispatch-10.f90: New test.
      bca8b13b
    • Jakub Jelinek's avatar
      Update copyright years. · 29bc14c7
      Jakub Jelinek authored
      29bc14c7
    • Jakub Jelinek's avatar
      Update copyright years. · 6441eb6d
      Jakub Jelinek authored
      6441eb6d
    • Jakub Jelinek's avatar
      Update copyright dates. · 7137812c
      Jakub Jelinek authored
      Manual part of copyright year updates.
      
      2025-01-02  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* gcc.cc (process_command): Update copyright notice dates.
      	* gcov-dump.cc (print_version): Ditto.
      	* gcov.cc (print_version): Ditto.
      	* gcov-tool.cc (print_version): Ditto.
      	* gengtype.cc (create_file): Ditto.
      	* doc/cpp.texi: Bump @copying's copyright year.
      	* doc/cppinternals.texi: Ditto.
      	* doc/gcc.texi: Ditto.
      	* doc/gccint.texi: Ditto.
      	* doc/gcov.texi: Ditto.
      	* doc/install.texi: Ditto.
      	* doc/invoke.texi: Ditto.
      gcc/ada/
      	* gnat_ugn.texi: Bump @copying's copyright year.
      	* gnat_rm.texi: Likewise.
      gcc/d/
      	* gdc.texi: Bump @copyrights-d year.
      gcc/fortran/
      	* gfortranspec.cc (lang_specific_driver): Update copyright notice
      	dates.
      	* gfc-internals.texi: Bump @copying's copyright year.
      	* gfortran.texi: Ditto.
      	* intrinsic.texi: Ditto.
      	* invoke.texi: Ditto.
      gcc/go/
      	* gccgo.texi: Bump @copyrights-go year.
      libgomp/
      	* libgomp.texi: Bump @copying's copyright year.
      libitm/
      	* libitm.texi: Bump @copying's copyright year.
      libquadmath/
      	* libquadmath.texi: Bump @copying's copyright year.
      7137812c
    • Jakub Jelinek's avatar
      Update Copyright year in ChangeLog files · 9cf2fb5d
      Jakub Jelinek authored
      2024 -> 2025
      9cf2fb5d
  20. Dec 20, 2024
  21. Dec 19, 2024
  22. Dec 11, 2024
  23. Dec 10, 2024
    • Tobias Burnus's avatar
      plugin/plugin-gcn.c: Fix error handling of GOMP_OFFLOAD_openacc_async_construct · 7a12dc69
      Tobias Burnus authored
      Follow up to r15-5392-g884637b6362391. As the name implies,
      GOMP_OFFLOAD_openacc_async_construct is also externally called.
      Hence, partially revert previous commit to permit unlocking handling
      in oacc-async.c's lookup_goacc_asyncqueue by not failing fatally.
      
      Hence, also the other (indirect) callers had to be updated:
      GOMP_OFFLOAD_dev2dev fails now with 'false' and
      GOMP_OFFLOAD_async_run fatally.
      
      libgomp/ChangeLog:
      
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_dev2dev, GOMP_OFFLOAD_async_run):
      	Handle omp_async_queue == NULL after call to maybe_init_omp_async.
      	(GOMP_OFFLOAD_openacc_async_construct): Use error not fatal error,
      	partially reverting r15-5392.
      7a12dc69
  24. Dec 07, 2024
  25. Dec 06, 2024
    • Thomas Schwinge's avatar
      nvptx: Support '-march=sm_89' · ed210c69
      Thomas Schwinge authored
      	gcc/
      	* config/nvptx/nvptx-sm.def: Add '89'.
      	* config/nvptx/nvptx-gen.h: Regenerate.
      	* config/nvptx/nvptx-gen.opt: Likewise.
      	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
      	* config/nvptx/nvptx.opt (-march-map=sm_89, -march-map=sm_90)
      	(march-map=sm_90a): Likewise.
      	* config.gcc: Likewise.
      	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_89'.
      	* config/nvptx/gen-multilib-matches-tests: Extend.
      	gcc/testsuite/
      	* gcc.target/nvptx/march-map=sm_89.c: Adjust.
      	* gcc.target/nvptx/march-map=sm_90.c: Likewise.
      	* gcc.target/nvptx/march-map=sm_90a.c: Likewise.
      	* gcc.target/nvptx/march=sm_89.c: New.
      	libgomp/
      	* testsuite/libgomp.c/declare-variant-3-sm89.c: New.
      	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
      ed210c69
    • Thomas Schwinge's avatar
      nvptx: Support '-march=sm_52' · 7cff338e
      Thomas Schwinge authored
      	gcc/
      	* config/nvptx/nvptx-sm.def: Add '52'.
      	* config/nvptx/nvptx-gen.h: Regenerate.
      	* config/nvptx/nvptx-gen.opt: Likewise.
      	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
      	* config/nvptx/nvptx.opt (-march-map=sm_52): Likewise.
      	* config.gcc: Likewise.
      	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_52'.
      	* config/nvptx/gen-multilib-matches-tests: Extend.
      	gcc/testsuite/
      	* gcc.target/nvptx/march-map=sm_52.c: Adjust.
      	* gcc.target/nvptx/march=sm_52.c: New.
      	libgomp/
      	* testsuite/libgomp.c/declare-variant-3-sm52.c: New.
      	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
      7cff338e
    • Thomas Schwinge's avatar
      nvptx: Support '-march=sm_37' · 7151d885
      Thomas Schwinge authored
      	gcc/
      	* config/nvptx/nvptx-sm.def: Add '37'.
      	* config/nvptx/nvptx-gen.h: Regenerate.
      	* config/nvptx/nvptx-gen.opt: Likewise.
      	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
      	* config/nvptx/nvptx.opt (-march-map=sm_37, -march-map=sm_50):
      	Likewise.
      	* config.gcc: Likewise.
      	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_37'.
      	* config/nvptx/gen-multilib-matches-tests: Extend.
      	gcc/testsuite/
      	* gcc.target/nvptx/march-map=sm_37.c: Adjust.
      	* gcc.target/nvptx/march-map=sm_50.c: Likewise.
      	* gcc.target/nvptx/march-map=sm_52.c: Likewise.
      	* gcc.target/nvptx/march=sm_37.c: New.
      	libgomp/
      	* testsuite/libgomp.c/declare-variant-3-sm37.c: New.
      	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
      7151d885
    • Thomas Schwinge's avatar
      Clarify libgomp nvptx 'omp_low_lat_mem_space' documentation · c80ecfa0
      Thomas Schwinge authored
      PTX '%dynamic_smem_size' was "Introduced in PTX ISA version 4.1", and
      "Requires 'sm_20' or higher".  Given that GCC/nvptx generally supports
      'sm_20', only the PTX ISA version matters here, and that's all fine if
      just using GCC's defaults.  Follow-up to
      commit e9a19ead
      "openmp, nvptx: low-lat memory access traits".
      
      	libgomp/
      	* libgomp.texi: Clarify nvptx 'omp_low_lat_mem_space'
      	documentation.
      c80ecfa0
    • Thomas Schwinge's avatar
      Fortran: Use OpenACC's acc_on_device builtin, fix OpenMP'... · ab5bd6ac
      Thomas Schwinge authored
      Fortran: Use OpenACC's acc_on_device builtin, fix OpenMP' __builtin_is_initial_device: Revert 'gimple_fold_builtin_acc_on_device' change
      
      The motivation of the 'gimple_fold_builtin_acc_on_device' change in
      commit 3269a722
      "Fortran: Use OpenACC's acc_on_device builtin, fix OpenMP' __builtin_is_initial_device"
      is unclear, and it unnecessarily diverges GCC's (default)
      '--disable-offload-targets' vs. '--enable-offload-targets=[...]'
      configurations.
      
      	PR testsuite/82250
      	gcc/
      	* gimple-fold.cc (gimple_fold_builtin_acc_on_device): Revert last
      	change.
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/routine-nohost-1.c: Revert
      	last change.
      ab5bd6ac
  26. Dec 04, 2024
  27. Dec 03, 2024
    • Tobias Burnus's avatar
      OpenMP: 'allocate' directive - fixes for 'alignof' and [[omp::decl]] · 3d72e50c
      Tobias Burnus authored
      Fixed a check to permit [[omp::decl(allocate,...)]] parsing in C.
      
      Additionaly, we discussed that 'allocate align' should not affect
      'alignof' to avoid issues like with:
      
        int a;
        _Alignas(_Alignof(a)) int b;
        #pragma omp allocate(a) align(128)
        _Alignas(_Alignof(a)) int c;
      
      Thus, the alignment is no longer set in the C and Fortran front ends,
      but for static variables now in varpool_node::finalize_decl.
      (For stack variables, the alignment is handled in gimplify_bind_expr.)
      
      NOTE: 'omp allocate' is not yet supported in C++.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (c_parser_omp_allocate): Only check scope if
      	not in_omp_decl_attribute. Remove setting the alignment.
      
      gcc/ChangeLog:
      
      	* cgraphunit.cc (varpool_node::finalize_decl): Set alignment
      	based on OpenMP's 'omp allocate' attribute/directive.
      
      gcc/fortran/ChangeLog:
      
      	* trans-decl.cc (gfc_finish_var_decl): Remove setting the alignment.
      
      libgomp/ChangeLog:
      
      	* libgomp.texi (Memory allocation): Mention (non-)effect of 'align'
      	on _Alignof.
      	* testsuite/libgomp.c/allocate-7.c: New test.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/allocate-18.c: Check that alignof is unaffected
      	by 'omp allocate'.
      	* c-c++-common/gomp/allocate-19.c: Likewise.
      3d72e50c
Loading