diff options
Diffstat (limited to 'gcc/ChangeLog.omp')
-rw-r--r-- | gcc/ChangeLog.omp | 867 |
1 files changed, 867 insertions, 0 deletions
diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp new file mode 100644 index 0000000..b832b2a --- /dev/null +++ b/gcc/ChangeLog.omp @@ -0,0 +1,867 @@ +2025-05-30 Thomas Schwinge <tschwinge@baylibre.com> + + Backported from master: + 2025-05-30 Thomas Schwinge <tschwinge@baylibre.com> + Richard Biener <rguenther@suse.de> + + PR middle-end/119835 + * tree-nrv.cc (pass_nrv::execute): Defuse 'RESULT_DECL' check. + +2025-05-22 Thomas Schwinge <tschwinge@baylibre.com> + + Backported from master: + 2025-05-19 Thomas Schwinge <tschwinge@baylibre.com> + + PR lto/120308 + * lto-streamer-out.cc (hash_tree): Don't handle 'TYPE_EMPTY_P' for + 'lto_stream_offload_p'. + * tree-streamer-in.cc (unpack_ts_type_common_value_fields): + Likewise. + * tree-streamer-out.cc (pack_ts_type_common_value_fields): + Likewise. + +2025-05-15 Sandra Loosemore <sloosemore@baylibre.com> + Tobias Burnus <tburnus@baylibre.com> + + * gimplify.cc (modify_call_for_omp_dispatch): Rework logic for + need_device_ptr and need_device_addr adjustments. + +2025-05-15 waffl3x <waffl3x@baylibre.com> + + PR c++/119659 + PR c++/118859 + PR c++/119601 + PR c++/119602 + PR c++/119775 + * gimplify.cc (modify_call_for_omp_dispatch): Refactor and change + attribute unpacking. For adjust_args variadic functions, expand + numeric ranges with relative bounds. Refactor argument adjustment. + +2025-05-15 Andrew Pinski <quic_apinski@quicinc.com> + + Backported from master: + 2025-04-25 Andrew Pinski <quic_apinski@quicinc.com> + Thomas Schwinge <tschwinge@baylibre.com> + + PR target/119737 + * config/gcn/gcn.cc (gcn_hsa_declare_function_name): Properly + switch sections. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * langhooks-def.h (lhd_omp_deep_mapping): Add new argument. + * langhooks.cc (lhd_omp_deep_mapping): Likewise. + * langhooks.h (omp_deep_mapping): Likewise. + * omp-low.cc (allocate_omp_iterator_elems): Work on the supplied + iterator set instead of the iterators in a supplied set of clauses. + (free_omp_iterator_elems): Likewise. + (lower_omp_target): Maintain vector of new iterators generated by + deep-mapping. Allocate and free iterator element arrays using + iterators found in clauses and in the new iterator vector. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (enter_omp_iterator_loop_context): New function variant. + (enter_omp_iterator_loop_context): Delegate to new variant. + (exit_omp_iterator_loop_context): New function variant. + (exit_omp_iterator_loop_context): Delegate to new variant. + (assign_to_iterator_elems_array): New. + (add_new_omp_iterators_entry): New. + (add_new_omp_iterators_clause): Delegate to + add_new_omp_iterators_entry. + * gimplify.h (enter_omp_iterator_loop_context): New prototype. + (enter_omp_iterator_loop_context): Remove default argument. + (exit_omp_iterator_loop_context): Remove argument. + (assign_to_iterator_elems_array): New prototype. + (add_new_omp_iterators_entry): New prototype. + (add_new_omp_iterators_clause): New prototype. + * langhooks-def.h (lhd_omp_deep_mapping_cnt): Remove const from + argument. + (lhd_omp_deep_mapping): Likewise. + * langhooks.cc (lhd_omp_deep_mapping_cnt): Likewise. + (lhd_omp_deep_mapping): Likewise. + * langhooks.h (omp_deep_mapping_cnt): Likewise. + (omp_deep_mapping): Likewise. + * omp-low.cc (lower_omp_map_iterator_expr): Delegate to + assign_to_iterator_elems_array. + (lower_omp_map_iterator_size): Likewise. + (lower_omp_target): Remove sorry for deep mapping. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (add_new_omp_iterators_clause): New. + (build_omp_struct_comp_nodes): Add extra argument for loops sequence. + Call add_new_omp_iterators_clause on newly generated clauses. + (omp_accumulate_sibling_list): Add extra argument for loops sequence. + Pass to calls to build_omp_struct_comp_nodes. Add iterators to newly + generator clauses for struct accesses. + (omp_build_struct_sibling_lists): Add extra argument for loops + sequence. Pass to call to omp_accumulate_sibling_list. + (gimplify_adjust_omp_clauses): Pass loops sequence to + omp_build_struct_sibling_lists. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (gimplify_omp_affinity): Use macros for accessing + iterator elements. + (compute_omp_iterator_count): Likewise. + (build_omp_iterator_loop): Likewise. + (remove_unused_omp_iterator_vars): Likewise. + (build_omp_iterators_loops): Likewise. + (enter_omp_iterator_loop_context_1): Likewise. + (extract_base_bit_offset): Likewise. + * omp-low.cc (lower_omp_map_iterator_expr): Likewise. + (lower_omp_map_iterator_size): Likewise. + (allocate_omp_iterator_elems): Likewise. + (free_omp_iterator_elems): Likewise. + * tree-inline.cc (copy_tree_body_r): Likewise. + * tree-pretty-print.cc (dump_omp_iterators): Likewise. + * tree.h (OMP_ITERATORS_VAR, OMP_ITERATORS_BEGIN, OMP_ITERATORS_END, + OMP_ITERATORS_STEP, OMP_ITERATORS_ORIG_STEP, OMP_ITERATORS_BLOCK, + OMP_ITERATORS_LABEL, OMP_ITERATORS_INDEX, OMP_ITERATORS_ELEMS, + OMP_ITERATORS_COUNT, OMP_ITERATORS_EXPANDED_P): New macros. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (omp_iterator_elems_length): New. + (build_omp_iterators_loops): Change type of elements + array to pointer of pointers if array length is non-constant, and + assign size with indirect reference. Reorder elements added to + iterator vector and add element containing the iteration count. Use + omp_iterator_elems_length to compute element array size required. + * gimplify.h (omp_iterator_elems_length): New prototype. + * omp-low.cc (lower_omp_map_iterator_expr): Reorder elements read + from iterator vector. If elements field is a pointer type, assign + using pointer arithmetic followed by indirect reference, and return + the field directly. + (lower_omp_map_iterator_size): Reorder elements read from iterator + vector. If elements field is a pointer type, assign using pointer + arithmetic followed by indirect reference. + (allocate_omp_iterator_elems): New. + (free_omp_iterator_elems): New. + (lower_omp_target): Call allocate_omp_iterator_elems before inserting + loops sequence, and call free_omp_iterator_elems afterwards. + * tree-pretty-print.cc (dump_omp_iterators): Print extra elements in + iterator vector. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + Andrew Stubbs <ams@baylibre.com> + + * gimplify.cc (compute_omp_iterator_count): Account for difference + in loop boundaries in Fortran. + (build_omp_iterator_loop): Change upper boundary condition for + Fortran. Insert block statements into innermost loop. + (remove_unused_omp_iterator_vars): Copy block subblocks of old + iterator to new iterator and remove original. + (contains_vars_1): New. + (contains_vars): New. + (extract_base_bit_offset): Add iterator argument. Remove iterator + variables from base. Do not set variable_offset if the offset + does not contain any remaining variables. + (omp_accumulate_sibling_list): Add iterator argument to + extract_base_bit_offset. + * tree-pretty-print.cc (dump_block_node): Ignore BLOCK_SUBBLOCKS + containing iterator block statements. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (gimplify_scan_omp_clauses): Add argument for iterator + loop sequence. Gimplify the clause decl and size into the iterator + loop if iterators are used. + (gimplify_omp_workshare): Add argument for iterator loops sequence + in call to gimplify_scan_omp_clauses. + (gimplify_omp_target_update): Call remove_unused_omp_iterator_vars and + build_omp_iterators_loops. Add loop sequence as argument when calling + gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses and building + the Gimple statement. + * tree-pretty-print.cc (dump_omp_clause): Call dump_omp_iterators + for to/from clauses with iterators. + * tree.cc (omp_clause_num_ops): Add extra operand for OMP_CLAUSE_FROM + and OMP_CLAUSE_TO. + * tree.h (OMP_CLAUSE_HAS_ITERATORS): Add check for OMP_CLAUSE_TO and + OMP_CLAUSE_FROM. + (OMP_CLAUSE_ITERATORS): Likewise. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + Andrew Stubbs <ams@baylibre.com> + + * gimple-pretty-print.cc (dump_gimple_omp_target): Print expanded + iterator loops. + * gimple.cc (gimple_build_omp_target): Add argument for iterator + loops sequence. Initialize iterator loops field. + * gimple.def (GIMPLE_OMP_TARGET): Set GSS symbol to GSS_OMP_TARGET. + * gimple.h (gomp_target): Set GSS symbol to GSS_OMP_TARGET. Add extra + field for iterator loops. + (gimple_build_omp_target): Add argument for iterator loops sequence. + (gimple_omp_target_iterator_loops): New. + (gimple_omp_target_iterator_loops_ptr): New. + (gimple_omp_target_set_iterator_loops): New. + * gimplify.cc (find_var_decl): New. + (copy_omp_iterator): New. + (remap_omp_iterator_var_1): New. + (remap_omp_iterator_var): New. + (remove_unused_omp_iterator_vars): New. + (struct iterator_loop_info_t): New type. + (iterator_loop_info_map_t): New type. + (build_omp_iterators_loops): New. + (enter_omp_iterator_loop_context_1): New. + (enter_omp_iterator_loop_context): New. + (enter_omp_iterator_loop_context): New. + (exit_omp_iterator_loop_context): New. + (gimplify_adjust_omp_clauses): Add argument for iterator loop + sequence. Gimplify the clause decl and size into the iterator + loop if iterators are used. + (gimplify_omp_workshare): Call remove_unused_omp_iterator_vars and + build_omp_iterators_loops for OpenMP target expressions. Add + loop sequence as argument when calling gimplify_adjust_omp_clauses + and building the Gimple statement. + * gimplify.h (enter_omp_iterator_loop_context): New prototype. + (exit_omp_iterator_loop_context): New prototype. + * gsstruct.def (GSS_OMP_TARGET): New. + * omp-low.cc (lower_omp_map_iterator_expr): New. + (lower_omp_map_iterator_size): New. + (finish_omp_map_iterators): New. + (lower_omp_target): Add sorry if iterators used with deep mapping. + Call lower_omp_map_iterator_expr before assigning to sender ref. + Call lower_omp_map_iterator_size before setting the size. Insert + iterator loop sequence before the statements for the target clause. + * tree-nested.cc (convert_nonlocal_reference_stmt): Walk the iterator + loop sequence of OpenMP target statements. + (convert_local_reference_stmt): Likewise. + (convert_tramp_reference_stmt): Likewise. + * tree-pretty-print.cc (dump_omp_iterators): Dump extra iterator + information if present. + (dump_omp_clause): Call dump_omp_iterators for iterators in map + clauses. + * tree.cc (omp_clause_num_ops): Add operand for OMP_CLAUSE_MAP. + (walk_tree_1): Do not walk last operand of OMP_CLAUSE_MAP. + * tree.h (OMP_CLAUSE_HAS_ITERATORS): New. + (OMP_CLAUSE_ITERATORS): New. + +2025-05-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (gimplify_omp_affinity): Use OMP_ITERATOR_DECL_P. + (compute_omp_iterator_count): New. + (build_omp_iterator_loop): New. + (gimplify_omp_depend): Use OMP_ITERATOR_DECL_P, + compute_omp_iterator_count and build_omp_iterator_loop. + * tree-inline.cc (copy_tree_body_r): Use OMP_ITERATOR_DECL_P. + * tree-pretty-print.cc (dump_omp_clause): Likewise. + * tree.h (OMP_ITERATOR_DECL_P): New macro. + +2025-05-15 Chung-Lin Tang <cltang@baylibre.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * doc/extend.texi: Adjust version references to 2.7 from 2.6. + +2025-05-15 Chung-Lin Tang <cltang@baylibre.com> + + * config/gcn/gcn-tree.cc (gcn_goacc_reduction_setup): Fix array case + copy source into reduction buffer. + * config/nvptx/nvptx.cc (nvptx_expand_shared_addr): Move default size + init setting place. + (enum nvptx_builtins): Add NVPTX_BUILTIN_BAR_WARPSYNC. + (nvptx_init_builtins): Add DEF() of nvptx_builtin_bar_warpsync. + (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BAR_WARPSYNC. + (nvptx_goacc_reduction_setup): Fix array case copy source into reduction + buffer. + (nvptx_goacc_reduction_fini): Add bar.warpsync for at end of vector-mode + reductions for sm_70 and above. + +2025-05-15 Chung-Lin Tang <cltang@baylibre.com> + + * config/gcn/gcn-tree.cc (#include "omp-offload.h"): Add include. + (#include "memmodel.h"): Add include. + (gcn_array_reduction_buffers): New vec<tree> + for holding DECLs for reduction buffer pointer variables. + (gcn_lockfull_update): Add pointer type fold_converts. + (gcn_reduction_update): Additions for handling ARRAY_TYPE, pointer to + ARRAY_TYPE, and RECORD_TYPE reductions. + (gcn_goacc_get_worker_red_decl): Adjust parameters to handle + non-constant offset case. + (gcn_goacc_get_worker_array_reduction_buffer): New function. + (gcn_create_if_else_seq): New function. + (gcn_create_do_while_loop_seq): New function. + (gcn_goacc_reduction_setup): Adjustments to handle arrays and records. + (gcn_goacc_reduction_init): Likewise. + (gcn_goacc_reduction_fini): Likewise. + (gcn_goacc_reduction_teardown): Likewise. + * config/nvptx/nvptx.cc (nvptx_gen_shuffle): Properly generate + V2SI shuffle using vec_extract op. + (nvptx_expand_shared_addr): Adjustments to handle non-constant size. + (nvptx_get_shared_red_addr): Adjust type/alignment calculations to + use TYPE_SIZE/ALIGN_UNIT instead of machine mode based. + (nvptx_get_shared_red_addr): New function with array_max_idx parameter. + (nvptx_reduction_update): Additions for handling ARRAY_TYPE, pointer to + ARRA_TYPE, and RECORD_TYPE reductions. + (nvptx_goacc_reduction_setup): Likewise. + (nvptx_goacc_reduction_init): Likewise. + (nvptx_goacc_reduction_fini): Likewise. + (nvptx_goacc_reduction_teardown): Likewise. + * gimplify.cc (gimplify_scan_omp_clauses): Gimplify inside COMPONENT_REF + and convert codes for OMP_CLAUSE_REDUCTION cases. Add DECL_P check for + do_add/do_add_decl goto case. + (gimplify_adjust_omp_clauses): Avoid GOMP_MAP_POINTER OMP_CLAUSE_SIZE + handling for OpenACC kernels. Call omp_add_variable for ARRAY_REF index. + Peel away array MEM_REF for decl lookup. + * omp-low.cc (struct omp_context): + Add 'hash_map<tree, tree> *block_vars_map' field. + (omp_copy_decl_2): Create/lookup using ctx->block_vars_map first. Add + new copy into ctx->block_vars_map. + (install_var_field): Add 'bool field_may_exist = false' parameter. + Adjust lookup assertions. + (delete_omp_context): Add delete of ctx->block_vars_map. + (scan_sharing_clauses): Adjust calls to install_var_field. Adjust + ARRAY_REF pointer type building to use decl type, rather than generic + ptr_type_node. For ARRAY_REFs on offloaded constructs, also add base + expression as field lookup key. + (omp_reduction_init_op): Add ARRAY_TYPE and RECORD_TYPE init op + construction. + (oacc_array_reduction_bias): New function. + (lower_oacc_reductions): Add array reduction handling code. Arrays use + a different mode of IFN parameters, using additional 'array_addr' and + 'array_max_idx' arguments. The LHS var is a simple integer for + dependency ordering. + (lower_omp_target): Adjust 'offload' condition for GOMP_MAP_POINTER + case. Generate BUILT_IN_ALLOCA_WITH_ALIGN to create private copy + for reductions of non-constant size types. + * omp-oacc-neuter-broadcast.cc (worker_single_copy): + Add 'hash_set<tree> *array_reduction_base_vars' parameter. Avoid + propagation for SSA_NAMEs used for array reduction accesses. + (neuter_worker_single): Add 'hash_set<tree> *array_reduction_base_vars' + parameter. Adjust recursive calls to self and worker_single_copy. + (oacc_do_neutering): Add 'hash_set<tree> *array_reduction_base_vars' + parameter. Adjust call to neuter_worker_single. + (execute_omp_oacc_neuter_broadcast): Add local + 'hash_set<tree> array_reduction_base_vars' declaration. Collect MEM_REF + base-pointer SSA_NAMEs of arrays into array_reduction_base_vars. Add + '&array_reduction_base_vars' argument to call of oacc_do_neutering. + * omp-offload.cc (#include "cfghooks.h"): Add include. + (oacc_build_array_copy): New function. + (oacc_build_array_copy_loop): New function. + (oacc_build_indexed_ssa_loop): New function. + (default_goacc_reduction): Adjustments to handle arrays. + * omp-offload.h (oacc_build_array_copy): New declaration. + (oacc_build_array_copy_loop): New declaration. + (oacc_build_indexed_ssa_loop): New declaration. + * tree-loop-distribution.cc (generate_memset_builtin): Under OpenACC, + when last stmt of pre-header block is a UNIQUE(OACC_FORK) internal-fn, + split a new basic block to serve as place of insertion, otherwise + may fail later checking because UNIQUE(OACC_FORK) counts as control + flow stmt. + (generate_memcpy_builtin): Likewise. + +2025-05-15 Sandra Loosemore <sloosemore@baylibre.com> + + * omp-general.cc (omp_context_selector_matches): Add an optional + bool argument for the code elision case. + * omp-general.h (omp_context_selector_matches): Likewise. + +2025-05-15 Sandra Loosemore <sloosemore@baylibre.com> + + * omp-general.cc (omp_mangle_variant_name): New. + (omp_check_for_duplicate_variant): New. + (omp_copy_trait_set): New. + (omp_trait_selectors_equivalent): New. + (omp_combine_trait_sets): New. + (omp_merge_context_selectors): New. + * omp-general.h (omp_mangle_variant_name): Declare. + (omp_check_for_duplicate_variant): Declare. + (omp_merge_context_selectors): Declare. + +2025-05-15 Chung-Lin Tang <cltang@baylibre.com> + + * gimple-expr.cc (copy_var_decl): Copy VAR_POINTS_TO_READONLY + for VAR_DECLs. + * omp-low.cc (lower_omp_target): Set VAR_POINTS_TO_READONLY for + variables of receiver refs. + * tree-pretty-print.cc (dump_omp_clause): + Print OMP_CLAUSE_MAP_POINTS_TO_READONLY. + (dump_generic_node): Print SSA_NAME_POINTS_TO_READONLY_MEMORY. + * tree-ssanames.cc (make_ssa_name_fn): Set + SSA_NAME_POINTS_TO_READONLY_MEMORY if DECL_POINTS_TO_READONLY is set. + * tree.h (OMP_CLAUSE_MAP_POINTS_TO_READONLY): New macro. + (VAR_POINTS_TO_READONLY): New macro. + +2025-05-15 waffl3x <waffl3x@baylibre.com> + Tobias Burnus <tobias@codesourcery.com> + + * cgraphunit.cc (varpool_node::finalize_decl): Add assert. + * gimplify.cc (gimplify_bind_expr): Handle C++ specific + implementation details. + +2025-05-15 Julian Brown <julian@codesourcery.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * gimplify.cc (gimplify_adjust_omp_clauses): Don't gimplify + VIEW_CONVERT_EXPR away in GOMP_MAP_TO_GRID/GOMP_MAP_FROM_GRID clauses. + * omp-low.cc (omp_noncontig_descriptor_type): Add SPAN field. + (scan_sharing_clauses): Don't store descriptor size in its + OMP_CLAUSE_SIZE field. + (lower_omp_target): Add missing OMP_CLAUSE_MAP check. Add special-case + string handling. Handle span and bias. Use low bound instead of zero + as index for trailing full dimensions. + +2025-05-15 Julian Brown <julian@codesourcery.com> + + * gimplify.cc (omp_group_last, omp_group_base): Add GOMP_MAP_TO_GRID, + GOMP_MAP_FROM_GRID support. + (gimplify_adjust_omp_clauses): Support new GOMP_MAP_GRID_DIM, + GOMP_MAP_GRID_STRIDE mapping nodes. Don't crash on e.g. misuse of + ADDR_EXPR in mapping clauses. + * omp-general.cc (omp_parse_noncontiguous_array): New function. + (omp_parse_access_method): Add noncontiguous array support. + (omp_parse_structure_base): Add array-shaping support. + (debug_omp_tokenized_addr): Add ACCESS_NONCONTIG_ARRAY, + ACCESS_NONCONTIG_REF_TO_ARRAY token support. + * omp-general.h (access_method_kinds): Add ACCESS_NONCONTIG_ARRAY and + ACCESS_NONCONTIG_REF_TO_ARRAY access kinds. + * omp-low.cc (omp_noncontig_descriptor_type): New function. + (scan_sharing_clauses): Support noncontiguous array updates. + (lower_omp_target): Likewise. + * tree-pretty-print.cc (dump_omp_clause): Add GOMP_MAP_TO_GRID, + GOMP_MAP_FROM_GRID, GOMP_MAP_GRID_DIM, GOMP_MAP_GRID_STRIDE map kinds. + (dump_generic_node): Add stride support for OMP_ARRAY_SECTION. + * tree.def (OMP_ARRAY_SECTION): Add stride argument. + +2025-05-15 Julian Brown <julian@codesourcery.com> + + * gimplify.cc (dwarf2out.h): Include. + (omp_maybe_get_descriptor_from_ptr): New function. + (build_omp_struct_comp_nodes): Use above function to locate array + descriptor when necessary. + (omp_mapping_group_data, omp_mapping_group_ptr, + omp_mapping_group_pset): New functions. + (omp_instantiate_mapper): Handle inlining of "declare mapper" function + bodies containing setup code (e.g. for Fortran). Handle pointers to + derived types. Handle GOMP_MAP_MAPPING_GROUPs. + * tree-pretty-print.cc (dump_omp_clause): Handle + GOMP_MAP_MAPPING_GROUP. + +2025-05-15 Julian Brown <julian@codesourcery.com> + + * gimplify.cc (gimplify_omp_ctx): Add IMPLICIT_MAPPERS field. + (new_omp_context): Initialise IMPLICIT_MAPPERS hash map. + (delete_omp_context): Delete IMPLICIT_MAPPERS hash map. + (instantiate_mapper_info): New structs. + (remap_mapper_decl_1, omp_mapper_copy_decl, omp_instantiate_mapper, + omp_instantiate_implicit_mappers): New functions. + (gimplify_scan_omp_clauses): Handle MAPPER_BINDING clauses. + (gimplify_adjust_omp_clauses): Instantiate implicit declared mappers. + (gimplify_omp_declare_mapper): New function. + (gimplify_expr): Call above function. + * langhooks-def.h (lhd_omp_finish_mapper_clauses, + lhd_omp_mapper_lookup, lhd_omp_extract_mapper_directive, + lhd_omp_map_array_section): Add prototypes. + (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES, + LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE, + LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define macros. + (LANG_HOOK_DECLS): Add above macros. + * langhooks.cc (lhd_omp_finish_mapper_clauses, + lhd_omp_mapper_lookup, lhd_omp_extract_mapper_directive, + lhd_omp_map_array_section): New dummy functions. + * langhooks.h (lang_hooks_for_decls): Add OMP_FINISH_MAPPER_CLAUSES, + OMP_MAPPER_LOOKUP, OMP_EXTRACT_MAPPER_DIRECTIVE, OMP_MAP_ARRAY_SECTION + hooks. + * omp-general.h (omp_name_type<T>): Add templatized struct, hash type + traits (for omp_name_type<tree> specialization). + (omp_mapper_list<T>): Add struct. + * tree-core.h (omp_clause_code): Add OMP_CLAUSE__MAPPER_BINDING_. + * tree-pretty-print.cc (dump_omp_clause): Support GOMP_MAP_UNSET, + GOMP_MAP_PUSH_MAPPER_NAME, GOMP_MAP_POP_MAPPER_NAME artificial mapping + clauses. Support OMP_CLAUSE__MAPPER_BINDING_ and OMP_DECLARE_MAPPER. + * tree.cc (omp_clause_num_ops, omp_clause_code_name): Add + OMP_CLAUSE__MAPPER_BINDING_. + * tree.def (OMP_DECLARE_MAPPER): New tree code. + * tree.h (OMP_DECLARE_MAPPER_ID, OMP_DECLARE_MAPPER_DECL, + OMP_DECLARE_MAPPER_CLAUSES): New defines. + (OMP_CLAUSE__MAPPER_BINDING__ID, OMP_CLAUSE__MAPPER_BINDING__DECL, + OMP_CLAUSE__MAPPER_BINDING__MAPPER): New defines. + +2025-05-15 Julian Brown <julian@codesourcery.com> + Thomas Schwinge <tschwinge@baylibre.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * gimplify.cc (gimplify_adjust_omp_clauses_1): Set + OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P for OpenACC also. + +2025-05-15 Julian Brown <julian@codesourcery.com> + Paul-Antoine Arras <parras@baylibre.com> + Sandra Loosemore <sandra@baylibre.com> + + * gimplify.cc (gimplify_adjust_omp_clauses_1): Handle "oacc declare + create" attribute. + +2025-05-15 Julian Brown <julian@codesourcery.com> + + * gimplify.cc (omp_tsort_mark, omp_mapping_group): Move before + gimplify_omp_ctx. Add constructor to omp_mapping_group. + (gimplify_omp_ctx): Add DECL_DATA_CLAUSE field. + (new_omp_context, delete_omp_context): Initialise and free above field. + (omp_gather_mapping_groups_1): Use constructor for omp_mapping_group. + (gimplify_scan_omp_clauses): Record mappings that might be lexically + inherited. Don't remove + GOMP_MAP_FIRSTPRIVATE_POINTER/GOMP_MAP_FIRSTPRIVATE_REFERENCE yet. + (gomp_oacc_needs_data_present): New function. + (gimplify_adjust_omp_clauses_1): Implement lexical inheritance + behaviour for OpenACC. + (gimplify_adjust_omp_clauses): Remove + GOMP_MAP_FIRSTPRIVATE_POINTER/GOMP_MAP_FIRSTPRIVATE_REFERENCE here + instead, after lexical inheritance is done. + +2025-05-15 Chung-Lin Tang <cltang@codesourcery.com> + + Backported from master: + 2023-05-19 Chung-Lin Tang <cltang@codesourcery.com> + + * builtins.cc (expand_builtin_omp_builtins): New function. + (expand_builtin): Add expand cases for BUILT_IN_GOMP_BARRIER, + BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_OMP_GET_NUM_THREADS, + BUILT_IN_OMP_GET_TEAM_NUM, and BUILT_IN_OMP_GET_NUM_TEAMS using + expand_builtin_omp_builtins, enabled under -fopenmp-target=acc. + * cgraphunit.cc (analyze_functions): Add call to + omp_ompacc_attribute_tagging, enabled under -fopenmp-target=acc. + * common.opt (fopenmp-target=): Add new option and enums. + * config/nvptx/mkoffload.cc (main): Handle -fopenmp-target=. + * config/nvptx/nvptx-protos.h (nvptx_expand_omp_get_num_threads): New + prototype. + (nvptx_mem_shared_p): Likewise. + * config/nvptx/nvptx.cc (omp_num_threads_sym): New global static RTX + symbol for number of threads in team. + (omp_num_threads_align): New var for alignment of omp_num_threads_sym. + (need_omp_num_threads): New bool for if any function references + omp_num_threads_sym. + (nvptx_option_override): Initialize omp_num_threads_sym/align. + (write_as_kernel): Disable normal OpenMP kernel entry under OMPACC mode. + (nvptx_declare_function_name): Disable shim function under OMPACC mode. + Disable soft-stack under OMPACC mode. Add generation of neutering init + code under OMPACC mode. + (nvptx_output_set_softstack): Return "" under OMPACC mode. + (nvptx_expand_call): Set parallelism to vector for function calls with + "ompacc for" attached. + (nvptx_expand_oacc_fork): Set mode to GOMP_DIM_VECTOR under OMPACC mode. + (nvptx_expand_oacc_join): Likewise. + (nvptx_expand_omp_get_num_threads): New function. + (nvptx_mem_shared_p): New function. + (nvptx_mach_max_workers): Return 1 under OMPACC mode. + (nvptx_mach_vector_length): Return 32 under OMPACC mode. + (nvptx_single): Add adjustments for OMPACC mode, which have + parallel-construct fork/joins, and regions of code where neutering is + dynamically determined. + (nvptx_reorg): Enable neutering under OMPACC mode when "ompacc for" + attribute is attached to function. Disable uniform-simt when under + OMPACC mode. + (nvptx_file_end): Write __nvptx_omp_num_threads out when needed. + (nvptx_goacc_fork_join): Return true under OMPACC mode. + * config/nvptx/nvptx.h (struct GTY(()) machine_function): Add + omp_parallel_predicate and omp_fn_entry_num_threads_reg fields. + * config/nvptx/nvptx.md (unspecv): Add UNSPECV_GET_TID, + UNSPECV_GET_NTID, UNSPECV_GET_CTAID, UNSPECV_GET_NCTAID, + UNSPECV_OMP_PARALLEL_FORK, UNSPECV_OMP_PARALLEL_JOIN entries. + (nvptx_shared_mem_operand): New predicate. + (gomp_barrier): New expand pattern. + (omp_get_num_threads): New expand pattern. + (omp_get_num_teams): New insn pattern. + (omp_get_thread_num): Likewise. + (omp_get_team_num): Likewise. + (get_ntid): Likewise. + (nvptx_omp_parallel_fork): Likewise. + (nvptx_omp_parallel_join): Likewise. + * expr.cc (expand_expr_real_1): Call expand_var_decl target hook. + * flag-types.h (omp_target_mode_kind): New flag value enum. + * gimplify.cc (struct gimplify_omp_ctx): Add 'bool ompacc' field. + (gimplify_scan_omp_clauses): Handle OMP_CLAUSE__OMPACC_. + (gimplify_adjust_omp_clauses): Likewise. + (gimplify_omp_ctx_ompacc_p): New function. + (gimplify_omp_for): Handle combined loops under OMPACC. + * lto-wrapper.cc (append_compiler_options): Add OPT_fopenmp_target_. + * omp-builtins.def (BUILT_IN_OMP_GET_THREAD_NUM): Remove CONST. + (BUILT_IN_OMP_GET_NUM_THREADS): Likewise. + * omp-expand.cc (remove_exit_barrier): Disable addressable-var + processing for parallel construct child functions under OMPACC mode. + (expand_oacc_for): Add OMPACC mode handling. + (get_target_arguments): Force thread_limit clause value to 1 under + OMPACC mode. + (expand_omp): Under OMPACC mode, avoid child function expanding of + GIMPLE_OMP_PARALLEL. + * omp-general.cc (omp_extract_for_data): Adjustments for OMPACC mode. + * omp-low.cc (struct omp_context): Add 'bool ompacc_p' field. + (scan_sharing_clauses): Handle OMP_CLAUSE__OMPACC_. + (ompacc_ctx_p): New function. + (scan_omp_parallel): Handle OMPACC mode, avoid creating child function. + (scan_omp_target): Tag "ompacc"/"ompacc for" attributes for target + construct child function, remove OMP_CLAUSE__OMPACC_ clauses. + (lower_oacc_head_mark): Handle OMPACC mode cases. + (lower_omp_for): Adjust OMP_FOR kind from OpenMP to OpenACC kinds, add + vector/gang clauses as needed. Add other OMPACC handling. + (lower_omp_taskreg): Add call to lower_oacc_head_tail for OMPACC case. + (lower_omp_target): Do OpenACC gang privatization under OMPACC case. + (lower_omp_teams): Forward OpenACC privatization variables to outer + target region under OMPACC mode. + (lower_omp_1): Do OpenACC gang privatization under OMPACC case for + GIMPLE_BIND. + * omp-offload.cc (ompacc_supported_clauses_p): New function. + (struct target_region_data): New struct type for tree walk. + (scan_fndecl_for_ompacc): New function. + (scan_omp_target_region_r): New function. + (scan_omp_target_construct_r): New function. + (omp_ompacc_attribute_tagging): New function. + (oacc_dim_call): Add OMPACC case handling. + (execute_oacc_device_lower): Make parts explicitly only OpenACC enabled. + (pass_oacc_device_lower::gate): Enable pass under OMPACC mode. + * omp-offload.h (omp_ompacc_attribute_tagging): New prototype. + * opts.cc (finish_options): Only allow -fopenmp-target= when -fopenmp + and no -fopenacc. + * target-insns.def (gomp_barrier): New defined insn pattern. + (omp_get_thread_num): Likewise. + (omp_get_num_threads): Likewise. + (omp_get_team_num): Likewise. + (omp_get_num_teams): Likewise. + * tree-core.h (enum omp_clause_code): Add new OMP_CLAUSE__OMPACC_ entry + for internal clause. + * tree-nested.cc (convert_nonlocal_omp_clauses): Handle + OMP_CLAUSE__OMPACC_. + * tree-pretty-print.cc (dump_omp_clause): Handle OMP_CLAUSE__OMPACC_. + * tree.cc (omp_clause_num_ops): Add OMP_CLAUSE__OMPACC_ entry. + (omp_clause_code_name): Likewise. + * tree.h (OMP_CLAUSE__OMPACC__FOR): New macro for OMP_CLAUSE__OMPACC_. + +2025-05-15 Andrew Stubbs <ams@codesourcery.com> + + * tree-vect-data-refs.cc (vect_analyze_data_refs): Workaround an + address-space bug. + +2025-05-15 Tobias Burnus <tobias@codesourcery.com> + + * builtin-types.def (BT_FN_VOID_PTRMODE): Add. + (BT_FN_PTRMODE_PTRMODE_INT_PTR): Add. + * gimplify.cc (gimplify_bind_expr): Diagnose missing + uses_allocators clause. + (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses, + gimplify_omp_workshare): Handle uses_allocators. + * omp-builtins.def (BUILT_IN_OMP_INIT_ALLOCATOR, + BUILT_IN_OMP_DESTROY_ALLOCATOR): Add. + * omp-low.cc (scan_sharing_clauses): Handle OMP_CLAUSE_USES_ALLOCATORS + and OMP_CLAUSE_USES_ALLOCATORS_ALLOCATOR clauses. + * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_USES_ALLOCATORS. + * tree.cc (omp_clause_num_ops, omp_clause_code_name): Likewise. + * tree-pretty-print.cc (dump_omp_clause): Handle it. + * tree.h (OMP_CLAUSE_USES_ALLOCATORS_ALLOCATOR, + OMP_CLAUSE_USES_ALLOCATORS_MEMSPACE, + OMP_CLAUSE_USES_ALLOCATORS_TRAITS): New. + +2025-05-15 Tobias Burnus <tobias@codesourcery.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * omp-oacc-kernels-decompose.cc (top_level_omp_for_in_stmt, + decompose_kernels_region_body): Handle GIMPLE_DEBUG like + simple assignment. + +2025-05-15 Andrew Stubbs <ams@baylibre.com> + + * omp-builtins.def (BUILT_IN_GOMP_ENABLE_PINNED_MODE): New. + * omp-low.cc (omp_enable_pinned_mode): New function. + (execute_lower_omp): Call omp_enable_pinned_mode. + +2025-05-15 Andrew Stubbs <ams@baylibre.com> + + * common.opt: Add -foffload-memory and its enum values. + * coretypes.h (enum offload_memory): New. + * doc/invoke.texi: Document -foffload-memory. + +2025-05-15 Kwok Cheung Yeung <kcy@codesourcery.com> + + * omp-expand.cc (expand_oacc_for): Convert .tile variable to + diff_type before multiplying. + * omp-general.cc (omp_extract_for_data): Use accumulated precision + of all collapsed for-loops as precision of iteration variable, up + to the precision of a long long. + +2025-05-15 Chung-Lin Tang <cltang@codesourcery.com> + Paul-Antoine Arras <parras@baylibre.com> + + * omp-low.cc (install_var_field): Add new 'tree key_expr = NULL_TREE' + default parameter. Set splay-tree lookup key to key_expr instead of + var if key_expr is non-NULL. Adjust call to install_parm_decl. + Update comments. + (scan_sharing_clauses): Use clause tree expression as splay-tree key + for map/to/from and OpenACC firstprivate cases when installing the + variable field into the send/receive record type. + (maybe_lookup_field_in_outer_ctx): Add code to search through + construct clauses instead of entirely based on splay-tree lookup. + (lower_oacc_reductions): Adjust to find map-clause of reduction + variable, then create receiver-ref. + (lower_omp_target): Adjust to lookup var field using clause expression. + +2025-05-15 Andrew Stubbs <ams@codesourcery.com> + + * dwarf2out.cc (add_location_or_const_value_attribute): Set + DW_AT_address_class, if appropriate. + +2025-05-15 Andrew Stubbs <ams@codesourcery.com> + + * dwarf2out.cc (notional_parents_list): New file variable. + (gen_subprogram_die): Record offload kernel functions in + notional_parents_list. + (fixup_notional_parents): New function. + (dwarf2out_finish): Call fixup_notional_parents. + (dwarf2out_c_finalize): Reset notional_parents_list. + +2025-05-15 Julian Brown <julian@codesourcery.com> + + * omp-offload.cc (oacc_thread_numbers): Add VF_BY_VECTORIZER parameter. + Add overloaded wrapper for previous arguments & behaviour. + (oacc_xform_loop): Lower vector loops to iterate a multiple of + omp_max_vf times over contiguous steps on non-SIMT targets. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + Julian Brown <julian@codesourcery.com> + Kwok Cheung Yeung <kcy@codesourcery.com> + Tobias Burnus <tobias@codesourcery.com> + Thomas Schwinge <thomas@codesourcery.com> + Paul-Antoine Arras <parras@baylibre.com> + + * gimplify.cc (omp_group_base): Handle GOMP_MAP_DECLARE_ALLOCATE + and GOMP_MAP_DECLARE_DEALLOCATE. + (gimplify_adjust_omp_clauses): Likewise. + * omp-low.cc (scan_sharing_clauses): Update handling of OpenACC declare + create, declare copyin and declare deviceptr to have local lifetimes. + (convert_to_firstprivate_int): Handle pointer types. + (convert_from_firstprivate_int): Likewise. Create local storage for + the values being pointed to. Add new orig_type argument. Use + VIEW_CONVERT also for vectors. + (lower_omp_target): Handle GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}. + Add orig_type argument to convert_from_firstprivate_int call. + Allow pointer types with GOMP_MAP_FIRSTPRIVATE_INT. Don't privatize + firstprivate VLAs. + * tree-pretty-print.cc (dump_omp_clause): Handle + GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}. + +2025-05-15 Julian Brown <julian@codesourcery.com> + Tobias Burnus <tobias@codesourcery.com> + Sandra Loosemore <sandra@baylibre.com> + + * gimplify.cc (localize_reductions): Rewrite references for + OMP_CLAUSE_PRIVATE also. Do not create local variable for + privatized arrays as the size is not directly known by the type. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + Julian Brown <julian@codesourcery.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * gimplify.cc (privatize_reduction): New struct. + (localize_reductions_r, localize_reductions): New functions. + (gimplify_omp_for): Call localize_reductions. + (gimplify_omp_workshare): Likewise. + * omp-low.cc (lower_oacc_reductions): Handle localized reductions. + Create fewer temp vars. + * tree-core.h (omp_clause_code): Add OMP_CLAUSE_REDUCTION_PRIVATE_DECL + documentation. + * tree.cc (omp_clause_num_ops): Bump number of ops for + OMP_CLAUSE_REDUCTION to 6. + (walk_tree_1): Adjust accordingly. + * tree.h (OMP_CLAUSE_REDUCTION_PRIVATE_DECL): Add macro. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + Chung-Lin Tang <cltang@codesourcery.com> + + * gimplify.cc (omp_add_variable): Enable firstprivate reduction + variables. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + + * omp-low.cc (lower_oacc_head_mark): Don't mark OpenACC auto + loops as independent inside acc parallel regions. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + Julian Brown <julian@codesourcery.com> + Tobias Burnus <tobias@codesourcery.com> + Kwok Cheung Yeung <kcy@codesourcery.com> + + * omp-low.cc (maybe_lookup_field_in_outer_ctx): New function. + (convert_to_firstprivate_int): New function. + (convert_from_firstprivate_int): New function. + (lower_omp_target): Enable GOMP_MAP_FIRSTPRIVATE_INT in OpenACC. + Remove unused variable. + +2025-05-15 Nathan Sidwell <nathan@acm.org> + Tom de Vries <tdevries@suse.de> + Thomas Schwinge <thomas@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + * doc/invoke.texi (fopenacc-dim): Document syntax for using + runtime value from environment variable. + * omp-offload.cc (oacc_parse_default_dims): Implement it. + +2025-05-15 Julian Brown <julian@codesourcery.com> + Cesar Philippidis <cesar@codesourcery.com> + + * config/nvptx/nvptx.cc (nvptx_propagate_unified): New. + (nvptx_split_blocks): Call it for cond_uni insn. + (nvptx_expand_cond_uni): New. + (enum nvptx_builtins): Add NVPTX_BUILTIN_COND_UNI. + (nvptx_init_builtins): Initialize it. + (nvptx_expand_builtin): Handle NVPTX_BUILTIN_COND_UNI. + (nvptx_generate_vector_shuffle): Change integral SHIFT operand to + tree BITS operand. + (nvptx_vector_reduction): New. + (nvptx_adjust_reduction_type): New. + (nvptx_goacc_reduction_setup): Use it to adjust the type of ref_to_res. + (nvptx_goacc_reduction_init): Don't update LHS if it doesn't exist. + (nvptx_goacc_reduction_fini): Call nvptx_vector_reduction for vector. + Use it to adjust the type of ref_to_res. + (nvptx_goacc_reduction_teardown): Call nvptx_adjust_reduction_type. + * config/nvptx/nvptx.md (cond_uni): New pattern. + * gimplify.cc (gimplify_adjust_omp_clauses): Add DECL_P check + for OMP_CLAUSE_TASK_REDUCTION. + * omp-low.cc (lower_oacc_reductions): Handle + GOMP_MAP_FIRSTPRIVATE_POINTER. + * omp-offload.cc (default_goacc_reduction): Likewise. + +2025-05-15 Cesar Philippidis <cesar@codesourcery.com> + James Norris <jnorris@codesourcery.com> + Julian Brown <julian@codesourcery.com> + Tobias Burnus <tobias@codesourcery.com> + Thomas Schwinge <tschwinge@baylibre.com> + + * gimplify.cc (enum gimplify_omp_var_data): Add GOVD_DEVICETPR. + (oacc_default_clause): Privatize fortran common blocks. + (omp_notice_variable): Add GOVD_DEVICEPTR attribute when appropriate. + Defer the expansion of DECL_VALUE_EXPR for common block decls. + (gimplify_scan_omp_clauses): Add GOVD_DEVICEPTR attribute when + appropriate. + (gimplify_adjust_omp_clauses_1): Set GOMP_MAP_FORCE_DEVICEPTR for + implicit deviceptr mappings. + +2025-05-15 Chung-Lin Tang <cltang@codesourcery.com> + Kwok Cheung Yeung <kcy@codesourcery.com> + Paul-Antoine Arras <parras@baylibre.com> + + PR other/76739 + * builtin-types.def (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_VAR): New type. + * gimplify.cc (omp_group_base): Handle GOMP_MAP_NONCONTIG_ARRAY_*. + (gimplify_scan_omp_clauses): Handle OMP_TARGET_UPDATE. + (gimplify_adjust_omp_clauses): Skip gimplification of + OMP_CLAUSE_SIZE of non-contiguous array maps (which is a TREE_LIST). + * omp-builtins.def (BUILT_IN_GOACC_DATA_START): Adjust function type + to new BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_VAR. + * omp-expand.cc (expand_omp_target): Add non-contiguous array + descriptor pointers to variadic arguments. + * omp-low.cc (append_field_to_record_type): New function. + (create_noncontig_array_descr_type): Likewise. + (create_noncontig_array_descr_init_code): Likewise. + (scan_sharing_clauses): For non-contiguous array map kinds, check for + supported dimension structure, and install non-contiguous array + variable into current omp_context. + (reorder_noncontig_array_clauses): New function. + (scan_omp_target): Call reorder_noncontig_array_clauses to place + non-contiguous array map clauses at beginning of clause sequence. + (lower_omp_target): Add handling for non-contiguous array map kinds, + add all created non-contiguous array descriptors to + gimple_omp_target_data_arg. + * tree-pretty-print.cc (dump_omp_clause): Handle + GOMP_MAP_NONCONTIG_ARRAY_*. + +2025-05-15 Sandra Loosemore <sloosemore@baylibre.com> + + * Makefile.in (REVISION_s): Change default message.
\ No newline at end of file |