Skip to content
Snippets Groups Projects
  1. Feb 12, 2025
  2. Feb 11, 2025
    • Roger Sayle's avatar
      Synchronize include/dwarf2.def with binutils · 0f8fd6b3
      Roger Sayle authored
      The contents of include/dwarf2.def have diverged between the gcc and
      the binutils repositories.  Currently, it's impossible to build a combined
      tree, as GCC won't build with the binutils version of dwarf2.def and binutils
      won't build with the gcc version.  This patch realigns this file by copying
      the defintion of DW_CFA_AARCH64_negate_ra_state_with_pc from binutils,
      restoring the ability to build a combined source tree.
      
      2025-02-11  Roger Sayle  <roger@nextmovesoftware.com>
      
      include/ChangeLog
      	* dwarf2.def (DW_CFA_AARCH64_negate_ra_state_with_pc): Define.
      0f8fd6b3
  3. Jan 09, 2025
  4. Jan 08, 2025
    • Jakub Jelinek's avatar
      dwarf2out: Emit DWARF 6 DW_AT_language_{name,version} · ec99905f
      Jakub Jelinek authored
      DWARF has voted in recently https://dwarfstd.org/issues/241209.1.html ,
      which is basically just a guarantee that the DWARF 6 draft
      DW_AT_language_{name,version} attribute codes and content of
      https://dwarfstd.org/languages-v6.html can be used as an extension
      in DWARF 5 and won't be changed.
      
      So, this patch is an alternative to the
      https://gcc.gnu.org/pipermail/gcc-patches/2024-November/669671.html
      patch, which had the major problem that it required changing all the
      DWARF consumers to be able to debug C17 or later or C++17 or later
      sources.
      This patch uses still DWARF 5 DW_LANG_C11 or DW_LANG_C_plus_plus_14,
      the latest code in DWARF 5 proper, so all DWARF 5 capable consumers
      should be able to deal with that, but additionally emits the
      DWARF 6 attributes so that newer DWARF consumers can see it isn't
      just C++14 but say C++23 or C11 but C23.  Consumers which don't know
      those DWARF 6 attributes would just ignore them.  This is like any other
      -gno-strict-dwarf extension, except that normally we emit say DWARF 5
      codes where possible only after DWARF 5 is released, while in this case
      there is a guarantee it can be used before DWARF 6 is released.
      
      2025-01-08  Jakub Jelinek  <jakub@redhat.com>
      
      include/
      	* dwarf2.h (enum dwarf_source_language): Fix comment pasto.
      	(enum dwarf_source_language_name): New type.
      	* dwarf2.def (DW_AT_language_name, DW_AT_language_version): New
      	DWARF 6 codes.
      gcc/
      	* dwarf2out.cc (break_out_comdat_types): Copy over
      	DW_AT_language_{name,version} if present.
      	(output_skeleton_debug_sections): Remove also
      	DW_AT_language_{name,version}.
      	(gen_compile_unit_die): For C17, C23, C2Y, C++17, C++20, C++23
      	and C++26 emit for -gdwarf-5 -gno-strict-dwarf also
      	DW_AT_language_{name,version} attributes.
      gcc/testsuite/
      	* g++.dg/debug/dwarf2/lang-cpp17.C: Add -gno-strict-dwarf to
      	dg-options.  Check also for DW_AT_language_{name,version} values.
      	* g++.dg/debug/dwarf2/lang-cpp20.C: Likewise.
      	* g++.dg/debug/dwarf2/lang-cpp23.C: New test.
      ec99905f
  5. Jan 02, 2025
  6. Dec 30, 2024
  7. Dec 29, 2024
    • John David Anglin's avatar
      Add support to provide libiberty mkstemps in gcc · 9fbf4a6a
      John David Anglin authored
      2024-12-28  John David Anglin  <danglin@gcc.gnu.org>
      
      gcc/ChangeLog:
      
      	PR target/118121
      	* configure.ac: Check for mkstemps declaration.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      
      include/ChangeLog:
      
      	* libiberty.h (mkstemps): Declare
      9fbf4a6a
  8. Nov 24, 2024
  9. Nov 23, 2024
  10. Nov 22, 2024
    • Tobias Burnus's avatar
      OpenMP: 'interop' construct - add C/C++ parser support, improve Fortran parsing · 8f0c8e57
      Tobias Burnus authored
      Add middle end support for the 'interop' directive and the 'init', 'use',
      and 'destroy' clauses - but fail with a sorry, unimplemented in gimplify.cc.
      
      For Fortran, generate the tree code, update the internal representation,
      add some more diagnostic checks and update for newer specification changes
      ('fr' only takes a single value, but it integer expressions are permitted
      again [like with the old syntax] not only constant identifiers).
      
      For C and C++, this patch adds the full parser support for 'interop'.
      
      Still missing is actually handling the directive in the middle end and
      in libgomp.
      
      The GOMP_INTEROP_IFR_* internal values have been changed to have space
      for vendor specific values that are adjacent to the existing values
      but negative, if needed.
      
      gcc/c-family/ChangeLog:
      
      	* c-common.h (enum c_omp_region_type): Add C_ORT_INTEROP
      	and C_ORT_OMP_INTEROP.
      	(c_omp_interop_t_p): New prototype.
      	* c-omp.cc (c_omp_interop_t_p): Check whether the type is
      	omp_interop_t.
      	(c_omp_directives): Uncomment 'interop'.
      	* c-pragma.cc (omp_pragmas): Add 'interop'.
      	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_INTEROP.
      	(enum pragma_omp_clause): Add init, use, and destroy clauses.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (INCLUDE_STRING): Define.
      	(c_parser_pragma): Handle 'interop' directive.
      	(c_parser_omp_clause_name): Handle init, use, and destroy clauses.
      	(c_parser_omp_all_clauses): Likewise; use C_ORT_OMP_INTEROP, if
      	'use' is permitted, for c_finish_omp_clauses.
      	(c_parser_omp_clause_destroy, c_parser_omp_modifier_prefer_type,
      	c_parser_omp_clause_init, c_parser_omp_clause_use,
      	OMP_INTEROP_CLAUSE_MASK, c_parser_omp_interop): New.
      	* c-typeck.cc (c_finish_omp_clauses): Add missing OPT_Wopenmp to
      	a warning; handle new clauses.
      
      gcc/cp/ChangeLog:
      
      	* parser.cc (INCLUDE_STRING): Define.
      	(cp_parser_omp_clause_name): Handle init, use, and destroy clauses.
      	(cp_parser_omp_all_clauses): Likewise; use C_ORT_OMP_INTEROP, if
      	'use' is permitted, for c_finish_omp_clauses.
      	(cp_parser_omp_modifier_prefer_type, cp_parser_omp_clause_init,
      	OMP_INTEROP_CLAUSE_MASK, cp_parser_omp_interop): New.
      	(cp_parser_pragma): Handle 'interop' directive.
      	* pt.cc (tsubst_omp_clauses): Handle init, use, and destroy clauses.
      	(tsubst_stmt): Handle OMP_INTEROP.
      	* semantics.cc (cp_omp_init_prefer_type_update): New.
      	(finish_omp_clauses): Handle  init, use, and destroy clauses
      	and add clause check for 'depend' on 'interop'.
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (gfc_omp_namelist): Cleanup interop internal
      	representation.
      	* dump-parse-tree.cc (show_omp_namelist): Update for changed
      	internal representation.
      	* match.cc (gfc_free_omp_namelist): Likewise.
      	* openmp.cc (gfc_match_omp_prefer_type, gfc_match_omp_init):
      	Likewise; also handle some corner cases better and update for
      	newer 6.0 changes related to 'fr'.
      	(resolve_omp_clauses): Add type-check for interop variables.
      	* trans-openmp.cc (gfc_trans_omp_clauses): Handle init, use
      	and destroy clauses.
      	(gfc_trans_openmp_interop): New.
      	(gfc_trans_omp_directive): Call it.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_expr): Handle OMP_INTEROP by printing
      	"sorry, uninplemented".
      	* omp-api.h (omp_get_fr_id_from_name): Change return type to
      	'char'.
      	* omp-general.cc (omp_get_fr_id_from_name): Likewise; return
      	GOMP_INTEROP_IFR_UNKNOWN not 0 if not found.
      	(omp_get_name_from_fr_id): Return "<unknown>" not NULL
      	if not found (used for dumps).
      	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DESTROY,
      	OMP_CLAUSE_USE, and OMP_CLAUSE_INIT.
      	* tree-pretty-print.cc (dump_omp_init_prefer_type): New.
      	(dump_omp_clause): Handle init, use and destroy clauses.
      	(dump_generic_node): Handle interop directive.
      	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Add new
      	init/use/destroy clauses.
      	* tree.def (OACC_LOOP): Fix comment.
      	(OMP_INTEROP): Add.
      	* tree.h (OMP_INTEROP_CLAUSES, OMP_CLAUSE_INIT_TARGET,
      	OMP_CLAUSE_INIT_TARGETSYNC, OMP_CLAUSE_INIT_PREFER_TYPE): New.
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_INTEROP_IFR_NONE): Rename ...
      	(GOMP_INTEROP_IFR_UNKNOWN): ... to this. And change value.
      	(GOMP_INTEROP_IFR_SEPARATOR): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/interop-1.f90: Update for parser changes,
      	spec changes and add new tests.
      	* gfortran.dg/gomp/interop-2.f90: Likewise.
      	* gfortran.dg/gomp/interop-3.f90: Likewise.
      	* c-c++-common/gomp/interop-1.c: New test.
      	* c-c++-common/gomp/interop-2.c: New test.
      	* c-c++-common/gomp/interop-3.c: New test.
      	* c-c++-common/gomp/interop-4.c: New test.
      	* g++.dg/gomp/interop-5.C: New test.
      	* gfortran.dg/gomp/interop-4.f90: New test.
      8f0c8e57
    • GCC Administrator's avatar
      Daily bump. · 8500a8c3
      GCC Administrator authored
      8500a8c3
  11. Nov 21, 2024
    • Jakub Jelinek's avatar
      include: Add new post-DWARF 5 DW_LANG_* enumerators · 806563f1
      Jakub Jelinek authored
      DWARF changed the language code assignment to be on a web page and
      after DWARF 5 has been published already 27 codes have been assigned.
      We have some of those already in the header, but most of them were missing,
      including one added just yesterday (DW_LANG_C23).
      Note, this is really post-DWARF 5 stuff rather than DWARF 6, because
      DWARF 6 plans to switch from DW_AT_language to DW_AT_language_{name,version}
      pair where we'll say DW_LNAME_C with 202311 version instead of this.
      
      2024-11-21  Jakub Jelinek  <jakub@redhat.com>
      
      	* dwarf2.h (enum dwarf_source_language): Add comment where
      	the post DWARF 5 additions start.  Refresh list from
      	https://dwarfstd.org/languages.html.
      806563f1
  12. Nov 02, 2024
  13. Oct 31, 2024
    • Mark Wielaard's avatar
      libiberty: Fix comment typos · aa84020b
      Mark Wielaard authored
      These comment typos were found in the valgrind fork of libiberty
      demangle code.
      
      libiberty/ChangeLog:
      
      	* cplus-dem.c: Change preceeded to preceded.
      
      include/ChangeLog:
      
      	* safe-ctype.h: Change accidently to accidentally.
      aa84020b
  14. Oct 26, 2024
  15. Oct 25, 2024
    • Jakub Jelinek's avatar
      non-gcc: Remove trailing whitespace · 45ab93d9
      Jakub Jelinek authored
      I've tried to build stage3 with
      -Wleading-whitespace=blanks -Wtrailing-whitespace=blank -Wno-error=leading-whitespace=blanks -Wno-error=trailing-whitespace=blank
      added to STRICT_WARN and that expectably resulted in about
      2744 unique trailing whitespace warnings and 124837 leading whitespace
      warnings when excluding *.md files (which obviously is in big part a
      generator issue).  Others from that are generator related, I think those
      need to be solved later.
      
      The following patch just fixes up the easy case (trailing whitespace),
      which could be easily automated:
      for i in `find . -name \*.h -o -name \*.cc -o -name \*.c | xargs grep -l '[ 	]$' | grep -v testsuite/`; do sed -i -e 's/[ 	]*$//' $i; done
      I've excluded files which I knew are obviously generated or go FE.
      
      Is there anything else we'd want to avoid the changes?
      
      Due to patch size, I've split it between gcc/ part
      and rest (include/, libiberty/, libgcc/, libcpp/, libstdc++-v3/;
      this part).
      
      2024-10-24  Jakub Jelinek  <jakub@redhat.com>
      
      include/
      	* dyn-string.h: Remove trailing whitespace.
      	* libiberty.h: Likewise.
      	* xregex.h: Likewise.
      	* splay-tree.h: Likewise.
      	* partition.h: Likewise.
      	* plugin-api.h: Likewise.
      	* demangle.h: Likewise.
      	* vtv-change-permission.h: Likewise.
      	* fibheap.h: Likewise.
      	* hsa_ext_image.h: Likewise.
      	* hashtab.h: Likewise.
      	* libcollector.h: Likewise.
      	* sort.h: Likewise.
      	* symcat.h: Likewise.
      	* hsa_ext_amd.h: Likewise.
      libcpp/
      	* directives.cc: Remove trailing whitespace.
      	* mkdeps.cc: Likewise.
      	* line-map.cc: Likewise.
      	* internal.h: Likewise.
      	* files.cc: Likewise.
      	* init.cc: Likewise.
      	* makeucnid.cc: Likewise.
      	* system.h: Likewise.
      	* include/line-map.h: Likewise.
      	* include/symtab.h: Likewise.
      	* include/cpplib.h: Likewise.
      	* expr.cc: Likewise.
      	* charset.cc: Likewise.
      	* macro.cc: Likewise.
      	* errors.cc: Likewise.
      	* lex.cc: Likewise.
      	* traditional.cc: Likewise.
      libgcc/
      	* crtstuff.c: Remove trailing whitespace.
      	* libgcov.h: Likewise.
      	* config/alpha/crtfastmath.c: Likewise.
      	* config/alpha/vms-gcc_shell_handler.c: Likewise.
      	* config/alpha/vms-unwind.h: Likewise.
      	* config/pa/linux-atomic.c: Likewise.
      	* config/pa/linux-unwind.h: Likewise.
      	* config/pa/quadlib.c: Likewise.
      	* config/pa/fptr.c: Likewise.
      	* config/s390/32/_fixsfdi.c: Likewise.
      	* config/s390/32/_fixunssfdi.c: Likewise.
      	* config/s390/32/_fixunsdfdi.c: Likewise.
      	* config/c6x/pr-support.c: Likewise.
      	* config/lm32/_udivsi3.c: Likewise.
      	* config/lm32/libgcc_lm32.h: Likewise.
      	* config/lm32/_udivmodsi4.c: Likewise.
      	* config/lm32/_mulsi3.c: Likewise.
      	* config/lm32/_modsi3.c: Likewise.
      	* config/lm32/_umodsi3.c: Likewise.
      	* config/lm32/_divsi3.c: Likewise.
      	* config/darwin-crt3.c: Likewise.
      	* config/msp430/mpy.c: Likewise.
      	* config/ia64/tf-signs.c: Likewise.
      	* config/ia64/fde-vms.c: Likewise.
      	* config/ia64/unwind-ia64.c: Likewise.
      	* config/ia64/vms-unwind.h: Likewise.
      	* config/ia64/sfp-exceptions.c: Likewise.
      	* config/ia64/quadlib.c: Likewise.
      	* config/ia64/unwind-ia64.h: Likewise.
      	* config/rl78/vregs.h: Likewise.
      	* config/arm/bpabi.c: Likewise.
      	* config/arm/unwind-arm.c: Likewise.
      	* config/arm/pr-support.c: Likewise.
      	* config/arm/linux-atomic.c: Likewise.
      	* config/arm/bpabi-lib.h: Likewise.
      	* config/frv/frvend.c: Likewise.
      	* config/frv/cmovw.c: Likewise.
      	* config/frv/frvbegin.c: Likewise.
      	* config/frv/cmovd.c: Likewise.
      	* config/frv/cmovh.c: Likewise.
      	* config/aarch64/cpuinfo.c: Likewise.
      	* config/i386/crtfastmath.c: Likewise.
      	* config/i386/cygming-crtend.c: Likewise.
      	* config/i386/32/tf-signs.c: Likewise.
      	* config/i386/crtprec.c: Likewise.
      	* config/i386/sfp-exceptions.c: Likewise.
      	* config/i386/w32-unwind.h: Likewise.
      	* config/m32r/initfini.c: Likewise.
      	* config/sparc/crtfastmath.c: Likewise.
      	* config/gcn/amdgcn_veclib.h: Likewise.
      	* config/nios2/linux-atomic.c: Likewise.
      	* config/nios2/linux-unwind.h: Likewise.
      	* config/nios2/lib2-mul.c: Likewise.
      	* config/nios2/lib2-nios2.h: Likewise.
      	* config/xtensa/unwind-dw2-xtensa.c: Likewise.
      	* config/rs6000/darwin-fallback.c: Likewise.
      	* config/rs6000/ibm-ldouble.c: Likewise.
      	* config/rs6000/sfp-machine.h: Likewise.
      	* config/rs6000/darwin-asm.h: Likewise.
      	* config/rs6000/darwin-crt2.c: Likewise.
      	* config/rs6000/aix-unwind.h: Likewise.
      	* config/rs6000/sfp-exceptions.c: Likewise.
      	* config/gthr-vxworks.c: Likewise.
      	* config/riscv/atomic.c: Likewise.
      	* config/visium/memcpy.c: Likewise.
      	* config/darwin-crt-tm.c: Likewise.
      	* config/stormy16/lib2funcs.c: Likewise.
      	* config/arc/ieee-754/divtab-arc-sf.c: Likewise.
      	* config/arc/ieee-754/divtab-arc-df.c: Likewise.
      	* config/arc/initfini.c: Likewise.
      	* config/sol2/gmon.c: Likewise.
      	* config/microblaze/divsi3_table.c: Likewise.
      	* config/m68k/fpgnulib.c: Likewise.
      	* libgcov-driver.c: Likewise.
      	* unwind-dw2.c: Likewise.
      	* fp-bit.c: Likewise.
      	* dfp-bit.h: Likewise.
      	* dfp-bit.c: Likewise.
      	* libgcov-driver-system.c: Likewise.
      libgcc/config/libbid/
      	* _le_td.c: Remove trailing whitespace.
      	* bid128_compare.c: Likewise.
      	* bid_div_macros.h: Likewise.
      	* bid64_to_bid128.c: Likewise.
      	* bid64_to_uint32.c: Likewise.
      	* bid128_to_uint64.c: Likewise.
      	* bid64_div.c: Likewise.
      	* bid128_round_integral.c: Likewise.
      	* bid_binarydecimal.c: Likewise.
      	* bid128_string.c: Likewise.
      	* bid_flag_operations.c: Likewise.
      	* bid128_to_int64.c: Likewise.
      	* _mul_sd.c: Likewise.
      	* bid64_mul.c: Likewise.
      	* bid128_noncomp.c: Likewise.
      	* _gt_dd.c: Likewise.
      	* bid64_add.c: Likewise.
      	* bid64_string.c: Likewise.
      	* bid_from_int.c: Likewise.
      	* bid128.c: Likewise.
      	* _ge_dd.c: Likewise.
      	* _ne_sd.c: Likewise.
      	* _dd_to_td.c: Likewise.
      	* _unord_sd.c: Likewise.
      	* bid64_to_uint64.c: Likewise.
      	* _gt_sd.c: Likewise.
      	* _sd_to_td.c: Likewise.
      	* _addsub_td.c: Likewise.
      	* _ne_td.c: Likewise.
      	* bid_dpd.c: Likewise.
      	* bid128_add.c: Likewise.
      	* bid128_next.c: Likewise.
      	* _lt_sd.c: Likewise.
      	* bid64_next.c: Likewise.
      	* bid128_mul.c: Likewise.
      	* _lt_dd.c: Likewise.
      	* _ge_td.c: Likewise.
      	* _unord_dd.c: Likewise.
      	* bid64_sqrt.c: Likewise.
      	* bid_sqrt_macros.h: Likewise.
      	* bid64_fma.c: Likewise.
      	* _sd_to_dd.c: Likewise.
      	* bid_conf.h: Likewise.
      	* bid64_noncomp.c: Likewise.
      	* bid_gcc_intrinsics.h: Likewise.
      	* _gt_td.c: Likewise.
      	* _ge_sd.c: Likewise.
      	* bid128_minmax.c: Likewise.
      	* bid128_quantize.c: Likewise.
      	* bid32_to_bid64.c: Likewise.
      	* bid_round.c: Likewise.
      	* _td_to_sd.c: Likewise.
      	* bid_inline_add.h: Likewise.
      	* bid128_fma.c: Likewise.
      	* _eq_td.c: Likewise.
      	* bid32_to_bid128.c: Likewise.
      	* bid64_rem.c: Likewise.
      	* bid128_2_str_tables.c: Likewise.
      	* _mul_dd.c: Likewise.
      	* _dd_to_sd.c: Likewise.
      	* bid128_div.c: Likewise.
      	* _lt_td.c: Likewise.
      	* bid64_compare.c: Likewise.
      	* bid64_to_int32.c: Likewise.
      	* _unord_td.c: Likewise.
      	* bid128_rem.c: Likewise.
      	* bid_internal.h: Likewise.
      	* bid64_to_int64.c: Likewise.
      	* _eq_dd.c: Likewise.
      	* _td_to_dd.c: Likewise.
      	* bid128_to_int32.c: Likewise.
      	* bid128_to_uint32.c: Likewise.
      	* _ne_dd.c: Likewise.
      	* bid64_quantize.c: Likewise.
      	* _le_dd.c: Likewise.
      	* bid64_round_integral.c: Likewise.
      	* _le_sd.c: Likewise.
      	* bid64_minmax.c: Likewise.
      libgcc/config/avr/libf7/
      	* f7-renames.h: Remove trailing whitespace.
      libstdc++-v3/
      	* include/debug/debug.h: Remove trailing whitespace.
      	* include/parallel/base.h: Likewise.
      	* include/parallel/types.h: Likewise.
      	* include/parallel/settings.h: Likewise.
      	* include/parallel/multiseq_selection.h: Likewise.
      	* include/parallel/partition.h: Likewise.
      	* include/parallel/random_number.h: Likewise.
      	* include/parallel/find_selectors.h: Likewise.
      	* include/parallel/partial_sum.h: Likewise.
      	* include/parallel/list_partition.h: Likewise.
      	* include/parallel/search.h: Likewise.
      	* include/parallel/algorithmfwd.h: Likewise.
      	* include/parallel/random_shuffle.h: Likewise.
      	* include/parallel/multiway_mergesort.h: Likewise.
      	* include/parallel/sort.h: Likewise.
      	* include/parallel/algobase.h: Likewise.
      	* include/parallel/numericfwd.h: Likewise.
      	* include/parallel/multiway_merge.h: Likewise.
      	* include/parallel/losertree.h: Likewise.
      	* include/bits/basic_ios.h: Likewise.
      	* include/bits/stringfwd.h: Likewise.
      	* include/bits/ostream_insert.h: Likewise.
      	* include/bits/stl_heap.h: Likewise.
      	* include/bits/unordered_map.h: Likewise.
      	* include/bits/hashtable_policy.h: Likewise.
      	* include/bits/stl_iterator_base_funcs.h: Likewise.
      	* include/bits/valarray_before.h: Likewise.
      	* include/bits/regex.h: Likewise.
      	* include/bits/postypes.h: Likewise.
      	* include/bits/stl_iterator.h: Likewise.
      	* include/bits/localefwd.h: Likewise.
      	* include/bits/stl_algo.h: Likewise.
      	* include/bits/ios_base.h: Likewise.
      	* include/bits/stl_function.h: Likewise.
      	* include/bits/basic_string.h: Likewise.
      	* include/bits/hashtable.h: Likewise.
      	* include/bits/valarray_after.h: Likewise.
      	* include/bits/char_traits.h: Likewise.
      	* include/bits/gslice.h: Likewise.
      	* include/bits/locale_facets_nonio.h: Likewise.
      	* include/bits/mask_array.h: Likewise.
      	* include/bits/specfun.h: Likewise.
      	* include/bits/random.h: Likewise.
      	* include/bits/slice_array.h: Likewise.
      	* include/bits/valarray_array.h: Likewise.
      	* include/tr1/float.h: Likewise.
      	* include/tr1/functional_hash.h: Likewise.
      	* include/tr1/math.h: Likewise.
      	* include/tr1/hashtable_policy.h: Likewise.
      	* include/tr1/stdio.h: Likewise.
      	* include/tr1/complex.h: Likewise.
      	* include/tr1/stdbool.h: Likewise.
      	* include/tr1/stdarg.h: Likewise.
      	* include/tr1/inttypes.h: Likewise.
      	* include/tr1/fenv.h: Likewise.
      	* include/tr1/stdlib.h: Likewise.
      	* include/tr1/wchar.h: Likewise.
      	* include/tr1/tgmath.h: Likewise.
      	* include/tr1/limits.h: Likewise.
      	* include/tr1/wctype.h: Likewise.
      	* include/tr1/stdint.h: Likewise.
      	* include/tr1/ctype.h: Likewise.
      	* include/tr1/random.h: Likewise.
      	* include/tr1/shared_ptr.h: Likewise.
      	* include/ext/mt_allocator.h: Likewise.
      	* include/ext/sso_string_base.h: Likewise.
      	* include/ext/debug_allocator.h: Likewise.
      	* include/ext/vstring_fwd.h: Likewise.
      	* include/ext/pointer.h: Likewise.
      	* include/ext/pod_char_traits.h: Likewise.
      	* include/ext/malloc_allocator.h: Likewise.
      	* include/ext/vstring.h: Likewise.
      	* include/ext/bitmap_allocator.h: Likewise.
      	* include/ext/pool_allocator.h: Likewise.
      	* include/ext/type_traits.h: Likewise.
      	* include/ext/ropeimpl.h: Likewise.
      	* include/ext/codecvt_specializations.h: Likewise.
      	* include/ext/throw_allocator.h: Likewise.
      	* include/ext/extptr_allocator.h: Likewise.
      	* include/ext/atomicity.h: Likewise.
      	* include/ext/concurrence.h: Likewise.
      	* include/c_compatibility/wchar.h: Likewise.
      	* include/c_compatibility/stdint.h: Likewise.
      	* include/backward/hash_fun.h: Likewise.
      	* include/backward/binders.h: Likewise.
      	* include/backward/hashtable.h: Likewise.
      	* include/backward/auto_ptr.h: Likewise.
      	* libsupc++/eh_arm.cc: Likewise.
      	* libsupc++/unwind-cxx.h: Likewise.
      	* libsupc++/si_class_type_info.cc: Likewise.
      	* libsupc++/vec.cc: Likewise.
      	* libsupc++/class_type_info.cc: Likewise.
      	* libsupc++/vmi_class_type_info.cc: Likewise.
      	* libsupc++/guard_error.cc: Likewise.
      	* libsupc++/bad_typeid.cc: Likewise.
      	* libsupc++/eh_personality.cc: Likewise.
      	* libsupc++/atexit_arm.cc: Likewise.
      	* libsupc++/pmem_type_info.cc: Likewise.
      	* libsupc++/vterminate.cc: Likewise.
      	* libsupc++/eh_terminate.cc: Likewise.
      	* libsupc++/bad_cast.cc: Likewise.
      	* libsupc++/exception_ptr.h: Likewise.
      	* libsupc++/eh_throw.cc: Likewise.
      	* libsupc++/bad_alloc.cc: Likewise.
      	* libsupc++/nested_exception.cc: Likewise.
      	* libsupc++/pointer_type_info.cc: Likewise.
      	* libsupc++/pbase_type_info.cc: Likewise.
      	* libsupc++/bad_array_new.cc: Likewise.
      	* libsupc++/pure.cc: Likewise.
      	* libsupc++/eh_exception.cc: Likewise.
      	* libsupc++/bad_array_length.cc: Likewise.
      	* libsupc++/cxxabi.h: Likewise.
      	* libsupc++/guard.cc: Likewise.
      	* libsupc++/eh_catch.cc: Likewise.
      	* libsupc++/cxxabi_forced.h: Likewise.
      	* libsupc++/tinfo.h: Likewise.
      45ab93d9
  16. Oct 08, 2024
  17. Oct 07, 2024
    • Tobias Burnus's avatar
      OpenMP: Allocate directive for static vars, clean up · a8caeaac
      Tobias Burnus authored
      For the 'allocate' directive, remove the sorry for static variables and
      just keep using normal memory, but honor the requested alignment and set
      a DECL_ATTRIBUTE in case a target may want to make use of this later on.
      The documentation is updated accordingly.
      
      The C diagnostic to check for predefined allocators (req. for static vars)
      failed to accept GCC's ompx_gnu_... allocator, now fixed. (Fortran was
      already okay; but both now use new common #defined value for checking.)
      And while Fortran common block variables are still rejected, the check
      has been improved as before the sorry diagnostic did not work for
      common blocks in modules.
      
      Finally, for 'allocate' clause on the target/task/taskloop directives,
      there is now a warning for omp_thread_mem_alloc (i.e. predefined allocator
      with access = thread), which is undefined behavior according to the
      OpenMP specification.
      
      And, last, testing showed that var decl + static_assert sets TREE_USED
      but does not produce a statement list in C, which did run into an assert
      in gimplify. This special case is now also handled.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (c_parser_omp_allocate): Set alignment for alignof;
      	accept static variables and fix predef allocator check.
      
      gcc/fortran/ChangeLog:
      
      	* openmp.cc (is_predefined_allocator): Use gomp-constants.h consts.
      	* trans-common.cc (translate_common): Reject OpenMP allocate directives.
      	* trans-decl.cc (gfc_finish_var_decl): Handle allocate directive
      	for static variables.
      	(gfc_trans_deferred_vars): Update for the latter.
      
      gcc/ChangeLog:
      
      	* gimplify.cc (gimplify_bind_expr): Fix corner case for OpenMP
      	allocate directive.
      	(gimplify_scan_omp_clauses): Warn if omp_thread_mem_alloc is used
      	as allocator with the target/task/taskloop directive.
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_OMP_PREDEF_ALLOC_MAX,
      	GOMP_OMPX_PREDEF_ALLOC_MIN, GOMP_OMPX_PREDEF_ALLOC_MAX,
      	GOMP_OMP_PREDEF_ALLOC_THREADS): New defines.
      
      libgomp/ChangeLog:
      
      	* allocator.c: Add static asserts for news
      	GOMP_OMP{,X}_PREDEF_ALLOC_{MIN,MAX} range values.
      	* libgomp.texi (OpenMP Impl. Status): Allocate directive for
      	static vars is now supported. Refer to PR for allocate clause.
      	(Memory allocation): Update for static vars; minor word tweaking.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/allocate-9.c: Update for removed sorry.
      	* gfortran.dg/gomp/allocate-15.f90: Likewise.
      	* gfortran.dg/gomp/allocate-pinned-1.f90: Likewise.
      	* gfortran.dg/gomp/allocate-4.f90: Likewise; add dg-error for
      	previously missing diagnostic.
      	* c-c++-common/gomp/allocate-18.c: New test.
      	* c-c++-common/gomp/allocate-19.c: New test.
      	* gfortran.dg/gomp/allocate-clause.f90: New test.
      	* gfortran.dg/gomp/allocate-static-2.f90: New test.
      	* gfortran.dg/gomp/allocate-static.f90: New test.
      a8caeaac
  18. Sep 25, 2024
  19. Sep 24, 2024
    • Tobias Burnus's avatar
      OpenMP: Add support for 'self_maps' to the 'require' directive · b752eed3
      Tobias Burnus authored
      'self_maps' implies 'unified_shared_memory', except that the latter
      also permits that explicit maps copy data to device memory while
      self_maps does not. In GCC, currently, both are handled identical.
      
      gcc/c/ChangeLog:
      
      	* c-parser.cc (c_parser_omp_requires): Handle self_maps clause.
      
      gcc/cp/ChangeLog:
      
      	* parser.cc (cp_parser_omp_requires): Handle self_maps clause.
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (enum gfc_omp_requires_kind): Add OMP_REQ_SELF_MAPS.
      	(gfc_namespace): Enlarge omp_requires bitfield.
      	* module.cc (enum ab_attribute, attr_bits): Add AB_OMP_REQ_SELF_MAPS.
      	(mio_symbol_attribute): Handle it.
      	* openmp.cc (gfc_check_omp_requires, gfc_match_omp_requires): Handle
      	self_maps clause.
      	* parse.cc (gfc_parse_file): Handle self_maps clause.
      
      gcc/ChangeLog:
      
      	* lto-cgraph.cc (output_offload_tables, omp_requires_to_name): Handle
      	self_maps clause.
      	* omp-general.cc (struct omp_ts_info, omp_context_selector_matches):
      	Likewise for the associated trait.
      	* omp-general.h (enum omp_requires): Add OMP_REQUIRES_SELF_MAPS.
      	* omp-selectors.h (enum omp_ts_code): Add
      	OMP_TRAIT_IMPLEMENTATION_SELF_MAPS.
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_REQUIRES_SELF_MAPS): #define.
      
      libgomp/ChangeLog:
      
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_num_devices):
      	Accept self_maps clause.
      	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_num_devices):
      	Likewise.
      	* libgomp.texi (TR13 Impl. Status): Set to 'Y'.
      	* target.c (gomp_requires_to_name, GOMP_offload_register_ver,
      	gomp_target_init): Handle self_maps clause.
      	* testsuite/libgomp.fortran/self_maps.f90: New test.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/declare-variant-1.c: Add self_maps test.
      	* c-c++-common/gomp/requires-4.c: Likewise.
      	* gfortran.dg/gomp/declare-variant-3.f90:  Likewise.
      	* c-c++-common/gomp/requires-2.c: Update dg-error msg.
      	* gfortran.dg/gomp/requires-2.f90: Likewise.
      	* gfortran.dg/gomp/requires-self-maps-aux.f90: New.
      	* gfortran.dg/gomp/requires-self-maps.f90: New.
      b752eed3
    • GCC Administrator's avatar
      Daily bump. · 4d6fa5b7
      GCC Administrator authored
      4d6fa5b7
  20. Sep 23, 2024
    • Matthieu Longo's avatar
      dwarf2: add hooks for architecture-specific CFIs · 9e1c71ba
      Matthieu Longo authored
      Architecture-specific CFI directives are currently declared an processed
      among others architecture-independent CFI directives in gcc/dwarf2* files.
      This approach creates confusion, specifically in the case of DWARF
      instructions in the vendor space and using the same instruction code.
      
      Such a clash currently happen between DW_CFA_GNU_window_save (used on
      SPARC) and DW_CFA_AARCH64_negate_ra_state (used on AArch64), and both
      having the same instruction code 0x2d.
      Then AArch64 compilers generates a SPARC CFI directive (.cfi_window_save)
      instead of .cfi_negate_ra_state, contrarilly to what is expected in
      [DWARF for the Arm 64-bit Architecture (AArch64)](https://github.com/
      ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst).
      
      This refactoring does not solve completely the problem, but improve the
      situation by moving some of the processing of those directives (more
      specifically their output in the assembly) to the backend via 2 target
      hooks:
      - DW_CFI_OPRND1_DESC: parse the first operand of the directive (if any).
      - OUTPUT_CFI_DIRECTIVE: output the CFI directive as a string.
      
      Additionally, this patch also contains a renaming of an enum used for
      return address mangling on AArch64.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64.cc
      	(aarch64_output_cfi_directive): New hook for CFI directives.
      	(aarch64_dw_cfi_oprnd1_desc): Same.
      	(TARGET_OUTPUT_CFI_DIRECTIVE): Hook for output_cfi_directive.
      	(TARGET_DW_CFI_OPRND1_DESC): Hook for dw_cfi_oprnd1_desc.
      	* config/sparc/sparc.cc
      	(sparc_output_cfi_directive): New hook for CFI directives.
      	(sparc_dw_cfi_oprnd1_desc): Same.
      	(TARGET_OUTPUT_CFI_DIRECTIVE): Hook for output_cfi_directive.
      	(TARGET_DW_CFI_OPRND1_DESC): Hook for dw_cfi_oprnd1_desc.
      	* coretypes.h
      	(struct dw_cfi_node): Forward declaration of CFI type from
      	gcc/dwarf2out.h.
      	(enum dw_cfi_oprnd_type): Same.
      	(enum dwarf_call_frame_info): Same.
      	* doc/tm.texi: Regenerated from doc/tm.texi.in.
      	* doc/tm.texi.in: Add doc for new target hooks.
      	type of enum to allow forward declaration.
      	* dwarf2cfi.cc
      	(struct dw_cfi_row): Update the description for window_save
      	and ra_mangled.
      	(dwarf2out_frame_debug_cfa_negate_ra_state): Use AArch64 CFI
      	directive instead of the SPARC one.
      	(change_cfi_row): Use the right CFI directive's name for RA
      	mangling.
      	(output_cfi): Remove explicit architecture-specific CFI
      	directive DW_CFA_GNU_window_save that falls into default case.
      	(output_cfi_directive): Use target hook as default.
      	* dwarf2out.cc (dw_cfi_oprnd1_desc): Use target hook as default.
      	* dwarf2out.h (enum dw_cfi_oprnd_type): specify underlying type
      	of enum to allow forward declaration.
      	(dw_cfi_oprnd1_desc): Call target hook.
      	(output_cfi_directive): Use dw_cfi_ref instead of struct
      	dw_cfi_node *.
      	* hooks.cc
      	(hook_bool_dwcfi_dwcfioprndtyperef_false): New.
      	(hook_bool_FILEptr_dwcfiptr_false): New.
      	* hooks.h
      	(hook_bool_dwcfi_dwcfioprndtyperef_false): New.
      	(hook_bool_FILEptr_dwcfiptr_false): New.
      	* target.def: Documentation for new hooks.
      
      include/ChangeLog:
      
      	* dwarf2.h (enum dwarf_call_frame_info): specify underlying
      
      libffi/ChangeLog:
      
      	* include/ffi_cfi.h (cfi_negate_ra_state): Declare AArch64 cfi
      	directive.
      
      libgcc/ChangeLog:
      
      	* config/aarch64/aarch64-asm.h (PACIASP): Replace SPARC CFI
      	directive by AArch64 one.
      	(AUTIASP): Same.
      
      libitm/ChangeLog:
      
      	* config/aarch64/sjlj.S: Replace SPARC CFI directive by
      	AArch64 one.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.target/aarch64/pr94515-1.C: Replace SPARC CFI directive by
      	AArch64 one.
      	* g++.target/aarch64/pr94515-2.C: Same.
      9e1c71ba
  21. Sep 20, 2024
    • GCC Administrator's avatar
      Daily bump. · 442db842
      GCC Administrator authored
      442db842
    • Tobias Burnus's avatar
      OpenMP: Add get_device_from_uid/omp_get_uid_from_device routines · bf4a5efa
      Tobias Burnus authored
      Those TR13/OpenMP 6.0 routines permit a reproducible offloading to
      a specific device by mapping an OpenMP device number to a
      unique ID (UID). The GPU device UIDs should be universally unique,
      the one for the host is not.
      
      gcc/ChangeLog:
      
      	* omp-general.cc (omp_runtime_api_procname): Add
      	get_device_from_uid and omp_get_uid_from_device routines.
      
      include/ChangeLog:
      
      	* cuda/cuda.h (cuDeviceGetUuid): Declare.
      	(cuDeviceGetUuid_v2): Add prototype.
      
      libgomp/ChangeLog:
      
      	* config/gcn/target.c (omp_get_uid_from_device,
      	omp_get_device_from_uid): Add stub implementation.
      	* config/nvptx/target.c (omp_get_uid_from_device,
      	omp_get_device_from_uid): Likewise.
      	* fortran.c (omp_get_uid_from_device_,
      	omp_get_uid_from_device_8_): New functions.
      	* libgomp-plugin.h (GOMP_OFFLOAD_get_uid): Add prototype.
      	* libgomp.h (struct gomp_device_descr): Add 'uid' and 'get_uid_func'.
      	* libgomp.map (GOMP_6.0): New, includind the new UID routines.
      	* libgomp.texi (OpenMP Technical Report 13): Mark UID routines as 'Y'.
      	(Device Information Routines): Document new UID routines.
      	(Offload-Target Specifics): Document UID format.
      	* omp.h.in (omp_get_device_from_uid, omp_get_uid_from_device):
      	New prototype.
      	* omp_lib.f90.in (omp_get_device_from_uid, omp_get_uid_from_device):
      	New interface.
      	* omp_lib.h.in: Likewise.
      	* plugin/cuda-lib.def: Add cuDeviceGetUuid and cuDeviceGetUuid_v2 via
      	CUDA_ONE_CALL_MAYBE_NULL.
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_uid): New.
      	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_uid): New.
      	* target.c (str_omp_initial_device): New static var.
      	(STR_OMP_DEV_PREFIX): Define.
      	(gomp_get_uid_for_device, omp_get_uid_from_device,
      	omp_get_device_from_uid): New.
      	(gomp_load_plugin_for_device): DLSYM_OPT the function 'get_uid'.
      	(gomp_target_init): Set the device's 'uid' field to NULL.
      	* testsuite/libgomp.c/device_uid.c: New test.
      	* testsuite/libgomp.fortran/device_uid.f90: New test.
      bf4a5efa
  22. Sep 14, 2024
  23. Sep 13, 2024
    • Tobias Burnus's avatar
      Fortran: Fixes to OpenMP 'interop' directive parsing support · 99988464
      Tobias Burnus authored
      Handle lists as argument to 'fr' and 'attr'; fix parsing corner cases.
      Additionally, 'fr' values are now internally stored as integer, permitting
      the diagnoses (warning) for values not defined in the OpenMP additional
      definitions document.
      
      	PR fortran/116661
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (gfc_omp_namelist): Rename 'init' members for clarity.
      	* match.cc (gfc_free_omp_namelist): Handle renaming.
      	* dump-parse-tree.cc (show_omp_namelist): Update for new format
      	and features.
      	* openmp.cc (gfc_match_omp_prefer_type): Parse list to 'fr' and 'attr';
      	store 'fr' values as integer.
      	(gfc_match_omp_init): Rename variable names.
      
      gcc/ChangeLog:
      
      	* omp-api.h (omp_get_fr_id_from_name, omp_get_name_from_fr_id): New
      	prototypes.
      	* omp-general.cc (omp_get_fr_id_from_name, omp_get_name_from_fr_id):
      	New.
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_INTEROP_IFR_LAST,
      	GOMP_INTEROP_IFR_SEPARATOR, GOMP_INTEROP_IFR_NONE): New.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/interop-1.f90: Extend, update dg-*.
      	* gfortran.dg/gomp/interop-2.f90: Update dg-error.
      	* gfortran.dg/gomp/interop-3.f90: Add dg-warning.
      99988464
  24. Aug 10, 2024
  25. Aug 09, 2024
  26. Jul 03, 2024
  27. Jul 02, 2024
    • David Faust's avatar
      ctf: use pointers instead of IDs internally · 36774cec
      David Faust authored
      This patch replaces all inter-type references in the ctfc internal data
      structures with pointers, rather than the references-by-ID which were
      used previously.
      
      A couple of small updates in the BPF backend are included to make it
      compatible with the change.
      
      This change is only to the in-memory representation of various CTF
      structures to make them easier to work with in various cases.  It is
      outwardly transparent; there is no change in emitted CTF.
      
      gcc/
      	* btfout.cc (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines to
      	include/btf.h.
      	(btf_dvd_emit_preprocess_cb, btf_emit_preprocess)
      	(btf_dmd_representable_bitfield_p, btf_asm_array, btf_asm_varent)
      	(btf_asm_sou_member, btf_asm_func_arg, btf_init_postprocess):
      	Adapt to structural changes in ctf_* structs.
      	* ctfc.h (struct ctf_dtdef): Add forward declaration.
      	(ctf_dtdef_t, ctf_dtdef_ref): Move typedefs earlier.
      	(struct ctf_arinfo, struct ctf_funcinfo, struct ctf_sliceinfo)
      	(struct ctf_itype, struct ctf_dmdef, struct ctf_func_arg)
      	(struct ctf_dvdef): Use pointers instead of type IDs for
      	references to other types and use typedefs where appropriate.
      	(struct ctf_dtdef): Add ref_type member.
      	(ctf_type_exists): Use pointer instead of type ID.
      	(ctf_add_reftype, ctf_add_enum, ctf_add_slice, ctf_add_float)
      	(ctf_add_integer, ctf_add_unknown, ctf_add_pointer)
      	(ctf_add_array, ctf_add_forward, ctf_add_typedef)
      	(ctf_add_function, ctf_add_sou, ctf_add_enumerator)
      	(ctf_add_variable): Likewise. Return pointer instead of ID.
      	(ctf_lookup_tree_type): Return pointer to type instead of ID.
      	* ctfc.cc: Analogous changes.
      	* ctfout.cc (ctf_asm_type, ctf_asm_slice, ctf_asm_varent)
      	(ctf_asm_sou_lmember, ctf_asm_sou_member, ctf_asm_func_arg)
      	(output_ctf_objt_info): Adapt to changes.
      	* dwarf2ctf.cc (gen_ctf_type, gen_ctf_void_type)
      	(gen_ctf_unknown_type, gen_ctf_base_type, gen_ctf_pointer_type)
      	(gen_ctf_subrange_type, gen_ctf_array_type, gen_ctf_typedef)
      	(gen_ctf_modifier_type, gen_ctf_sou_type, gen_ctf_function_type)
      	(gen_ctf_enumeration_type, gen_ctf_variable, gen_ctf_function)
      	(gen_ctf_type, ctf_do_die): Likewise.
      	* config/bpf/btfext-out.cc (struct btf_ext_core_reloc): Use
      	pointer instead of type ID.
      	(bpf_core_reloc_add, bpf_core_get_sou_member_index)
      	(output_btfext_core_sections): Adapt to above changes.
      	* config/bpf/core-builtins.cc (process_type): Likewise.
      
      include/
      	* btf.h (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines here,
      	from gcc/btfout.cc.
      36774cec
  28. May 30, 2024
  29. May 29, 2024
    • Tobias Burnus's avatar
      libgomp: Enable USM for AMD APUs and MI200 devices · 18f47798
      Tobias Burnus authored
      If HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT is true,
      all GPUs on the system support unified shared memory. That's
      the case for APUs and MI200 devices when XNACK is enabled.
      
      XNACK can be enabled by setting HSA_XNACK=1 as env var for
      supported devices; otherwise, if disable, USM code will
      use host fallback.
      
      gcc/ChangeLog:
      
      	* config/gcn/gcn-hsa.h (gcn_local_sym_hash): Fix typo.
      
      include/ChangeLog:
      
      	* hsa.h (HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT): Add
      	enum value.
      
      libgomp/ChangeLog:
      
      	* libgomp.texi (gcn): Update USM handling
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_num_devices): Handle
      	USM if HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT is true.
      18f47798
    • Tobias Burnus's avatar
      libgomp: Enable USM for some nvptx devices · 4ccb3366
      Tobias Burnus authored
      A few high-end nvptx devices support the attribute
      CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS; for those, unified shared
      memory is supported in hardware. This patch enables support for those -
      if all installed nvptx devices have this feature (as the capabilities
      are per device type).
      
      This exposes a bug in gomp_copy_back_icvs as it did before use
      omp_get_mapped_ptr to find mapped variables, but that returns
      the unchanged pointer in cased of shared memory. But in this case,
      we have a few actually mapped pointers - like the ICV variables.
      Additionally, there was a mismatch with regards to '-1' for the
      device number as gomp_copy_back_icvs and omp_get_mapped_ptr count
      differently. Hence, do the lookup manually.
      
      include/ChangeLog:
      
      	* cuda/cuda.h (CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS): Add.
      
      libgomp/ChangeLog:
      
      	* libgomp.texi (nvptx): Update USM description.
      	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_num_devices):
      	Claim support when requesting USM and all devices support
      	CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS.
      	* target.c (gomp_copy_back_icvs): Fix device ptr lookup.
      	(gomp_target_init): Set GOMP_OFFLOAD_CAP_SHARED_MEM is the
      	devices supports USM.
      4ccb3366
  30. Apr 09, 2024
  31. Apr 08, 2024
    • Thomas Schwinge's avatar
      GCN, nvptx: Errors during device probing are fatal · a02d7f0e
      Thomas Schwinge authored
      Currently, we silently disable libgomp GCN and nvptx plugins/devices in
      presence of certain error conditions during device probing, thus typically
      silently resorting to host-fallback execution.  Make such errors fatal, similar
      as for any other device access later on, so that we early and reliably notice
      when things go wrong.  (Keep just two cases non-fatal: (a) libgomp GCN or nvptx
      plugins are available but 'libhsa-runtime64.so.1' or 'libcuda.so.1' are not,
      and (b) those are available, but the corresponding devices are not.)
      
      This resolves the issue that we've got execution test cases unexpectedly
      PASSing, despite:
      
          libgomp: GCN fatal error: Run-time could not be initialized
          Runtime message: HSA_STATUS_ERROR_OUT_OF_RESOURCES: The runtime failed to allocate the necessary resources. This error may also occur when the core runtime library needs to spawn threads or create internal OS-specific events.
      
      ..., and therefore they were not offloaded to the GCN device, but ran in
      host-fallback execution mode.  What happend in that scenario is that in
      'init_hsa_context' during the initial 'GOMP_OFFLOAD_get_num_devices' we ran
      into 'HSA_STATUS_ERROR_OUT_OF_RESOURCES', but it wasn't fatal, but just
      silently disabled the libgomp plugin/device.
      
      Especially "entertaining" were cases where such unintended host-fallback
      execution happened during effective-target checks like
      'offload_device_available' (host-fallback execution there meaning: no offload
      device available), but actual test cases then were running with an offload
      device available, and therefore mis-configured.
      
      	include/
      	* cuda/cuda.h (CUresult): Add 'CUDA_ERROR_NO_DEVICE'.
      	libgomp/
      	* plugin/plugin-gcn.c (init_hsa_context): Add and handle
      	'bool probe' parameter.  Adjust all users; errors during device
      	probing are fatal.
      	* plugin/plugin-nvptx.c (nvptx_get_num_devices): Aside from
      	'CUDA_ERROR_NO_DEVICE', errors during device probing are fatal.
      a02d7f0e
  32. Mar 01, 2024
  33. Feb 29, 2024
    • Tom Tromey's avatar
      Fix PR libcc1/113977 · bc0e18a9
      Tom Tromey authored
      PR libcc1/113977 points out a case where a simple expression is
      rejected with a compiler error message.  The bug here is that gdb does
      not inform the plugin of the correct alignment -- in fact, there is no
      way to do that.
      
      This patch adds a new method to allow the alignment to be set, and
      bumps the C front end protocol version.
      
      It also includes some updates to various comments in 'include', done
      here to simplify the merge to binutils-gdb.
      
      include
      
      	* gcc-cp-interface.h (gcc_cp_fe_context_function): Update
      	comment.
      	* gcc-c-interface.h (enum gcc_c_api_version) <GCC_C_FE_VERSION_2>:
      	New constant.
      	(gcc_c_fe_context_function): Update comment.
      	* gcc-c-fe.def (finish_record_with_alignment): New method.
      	Update documentation.
      
      libcc1
      
      	PR libcc1/113977
      	* libcc1plugin.cc (plugin_finish_record_or_union): New function.
      	(plugin_finish_record_or_union): Rewrite.
      	(plugin_init): Use GCC_C_FE_VERSION_2.
      	* libcc1.cc (c_vtable): Use GCC_C_FE_VERSION_2.
      	(gcc_c_fe_context): Check for GCC_C_FE_VERSION_2.
      
      
      bc0e18a9
  34. Jan 14, 2024
  35. Jan 13, 2024
    • Jakub Jelinek's avatar
      c++, demangle: Implement https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal · 65388b28
      Jakub Jelinek authored
      The following patch attempts to implement what apparently clang++
      implemented for explicit object member function mangling, but nobody
      actually proposed in patch form in
      https://github.com/itanium-cxx-abi/cxx-abi/issues/148
      
      2024-01-13  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/cp/
      	* mangle.cc (write_nested_name): Mangle explicit object
      	member functions with H as per
      	https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal.
      gcc/testsuite/
      	* g++.dg/abi/mangle79.C: New test.
      include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
      libiberty/
      	* cp-demangle.c (FNQUAL_COMPONENT_CASE): Add case for
      	DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
      	(d_dump): Handle DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
      	(d_nested_name): Parse H after N in nested name.
      	(d_count_templates_scopes): Handle
      	DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
      	(d_print_mod): Likewise.
      	(d_print_function_type): Likewise.
      	* testsuite/demangle-expected: Add tests for explicit object
      	member functions.
      65388b28
Loading