Skip to content
Snippets Groups Projects
  1. Jun 06, 2023
    • Tobias Burnus's avatar
      openmp: Add support for the 'present' modifier · 4ede915d
      Tobias Burnus authored
      This implements support for the OpenMP 5.1 'present' modifier, which can be
      used in map clauses in the 'target', 'target data', 'target data enter' and
      'target data exit' constructs, and in the 'to' and 'from' clauses of the
      'target update' construct.  It is also supported in defaultmap.
      
      The modifier triggers a fatal runtime error if the data specified by the
      clause is not already present on the target device.  It can also be combined
      with 'always' in map clauses.
      
      2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Tobias Burnus  <tobias@codesourcery.com>
      
      gcc/c/
      	* c-parser.cc (c_parser_omp_clause_defaultmap,
      	c_parser_omp_clause_map): Parse 'present'.
      	(c_parser_omp_clause_to, c_parser_omp_clause_from): Remove.
      	(c_parser_omp_clause_from_to): New; parse to/from clauses with
      	optional present modifer.
      	(c_parser_omp_all_clauses): Update call.
      	(c_parser_omp_target_data, c_parser_omp_target_enter_data,
      	c_parser_omp_target_exit_data): Handle new map enum values
      	for 'present' mapping.
      
      gcc/cp/
      	* parser.cc (cp_parser_omp_clause_defaultmap,
      	cp_parser_omp_clause_map): Parse 'present'.
      	(cp_parser_omp_clause_from_to): New; parse to/from
      	clauses with optional 'present' modifier.
      	(cp_parser_omp_all_clauses): Update call.
      	(cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
      	cp_parser_omp_target_exit_data): Handle new enum value for
      	'present' mapping.
      	* semantics.cc (finish_omp_target): Likewise.
      
      gcc/fortran/
      	* dump-parse-tree.cc (show_omp_namelist): Display 'present' map
      	modifier.
      	(show_omp_clauses): Display 'present' motion modifier for 'to'
      	and 'from' clauses.
      
      	* gfortran.h (enum gfc_omp_map_op): Add entries with 'present'
      	modifiers.
      	(struct gfc_omp_namelist): Add 'present_modifer'.
      	* openmp.cc (gfc_match_motion_var_list): New, handles optional
      	'present' modifier for to/from clauses.
      	(gfc_match_omp_clauses): Call it for to/from clauses; parse 'present'
      	in defaultmap and map clauses.
      	(resolve_omp_clauses): Allow 'present' modifiers on 'target',
      	'target data', 'target enter' and 'target exit'	directives.
      	* trans-openmp.cc (gfc_trans_omp_clauses): Apply 'present' modifiers
      	to tree node for 'map', 'to' and 'from'	clauses.  Apply 'present' for
      	defaultmap.
      
      gcc/
      	* gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
      	and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
      	set.
      	(omp_get_attachment): Handle map clauses with 'present' modifier.
      	(omp_group_base): Likewise.
      	(gimplify_scan_omp_clauses): Reorder present maps to come first.
      	Set GOVD flags for present defaultmaps.
      	(gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
      	* omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
      	clauses.
      	(lower_omp_target): Handle map clauses with 'present' modifier.
      	Handle 'to' and 'from' clauses with 'present'.
      	* tree-core.h (enum omp_clause_defaultmap_kind): Add
      	OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
      	* tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
      	'from' clauses with 'present' modifier.  Handle present defaultmap.
      	* tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
      
      include/
      	* gomp-constants.h (GOMP_MAP_FLAG_SPECIAL_5): New.
      	(GOMP_MAP_FLAG_FORCE): Redefine.
      	(GOMP_MAP_FLAG_PRESENT, GOMP_MAP_FLAG_ALWAYS_PRESENT): New.
      	(enum gomp_map_kind): Add map kinds with 'present' modifiers.
      	(GOMP_MAP_COPY_TO_P, GOMP_MAP_COPY_FROM_P): Evaluate to true for
      	map variants with 'present'
      	(GOMP_MAP_ALWAYS_TO_P, GOMP_MAP_ALWAYS_FROM_P): Evaluate to true
      	for map variants with 'always, present' modifiers.
      	(GOMP_MAP_ALWAYS): Redefine.
      	(GOMP_MAP_FORCE_P, GOMP_MAP_PRESENT_P): New.
      
      libgomp/
      	* libgomp.texi (OpenMP 5.1 Impl. status): Set 'present' support for
      	defaultmap to 'Y', add 'Y' entry for 'present' on to/from/map clauses.
      	* target.c (gomp_to_device_kind_p): Add map kinds with 'present'
      	modifier.
      	(gomp_map_vars_existing): Use new GOMP_MAP_FORCE_P macro.
      	(gomp_map_vars_internal, gomp_update, gomp_target_rev):
      	Emit runtime error if memory region not present.
      	* testsuite/libgomp.c-c++-common/target-present-1.c: New test.
      	* testsuite/libgomp.c-c++-common/target-present-2.c: New test.
      	* testsuite/libgomp.c-c++-common/target-present-3.c: New test.
      	* testsuite/libgomp.fortran/target-present-1.f90: New test.
      	* testsuite/libgomp.fortran/target-present-2.f90: New test.
      	* testsuite/libgomp.fortran/target-present-3.f90: New test.
      
      gcc/testsuite/
      
      	* c-c++-common/gomp/map-6.c: Update dg-error, extend to test for
      	duplicated 'present' and extend scan-dump tests for 'present'.
      	* gfortran.dg/gomp/defaultmap-1.f90: Update dg-error.
      	* gfortran.dg/gomp/map-7.f90: Extend parse and dump test for
      	'present'.
      	* gfortran.dg/gomp/map-8.f90: Extend for duplicate 'present'
      	modifier checking.
      	* c-c++-common/gomp/defaultmap-4.c: New test.
      	* c-c++-common/gomp/map-9.c: New test.
      	* c-c++-common/gomp/target-update-1.c: New test.
      	* gfortran.dg/gomp/defaultmap-8.f90: New test.
      	* gfortran.dg/gomp/map-11.f90: New test.
      	* gfortran.dg/gomp/map-12.f90: New test.
      	* gfortran.dg/gomp/target-update-1.f90: New test.
      4ede915d
  2. May 12, 2023
  3. May 11, 2023
    • Joseph Myers's avatar
      Implement LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook [PR109128] · c49d51fa
      Joseph Myers authored
      This is one part of the fix for PR109128, along with a corresponding
      binutils's linker change.  Without this patch, what happens in the
      linker, when an unused object in a .a file has offload data, is that
      elf_link_is_defined_archive_symbol calls bfd_link_plugin_object_p,
      which ends up calling the plugin's claim_file_handler, which then
      records the object as one with offload data. That is, the linker never
      decides to use the object in the first place, but use of this _p
      interface (called as part of trying to decide whether to use the
      object) results in the plugin deciding to use its offload data (and a
      consequent mismatch in the offload data present at runtime).
      
      The new hook allows the linker plugin to distinguish calls to
      claim_file_handler that know the object is being used by the linker
      (from ldmain.c:add_archive_element), from calls that don't know it's
      being used by the linker (from elf_link_is_defined_archive_symbol); in
      the latter case, the plugin should avoid recording the object as one
      with offload data.
      
      	PR middle-end/109128
      
      	include/
      	* plugin-api.h (ld_plugin_claim_file_handler_v2)
      	(ld_plugin_register_claim_file_v2)
      	(LDPT_REGISTER_CLAIM_FILE_HOOK_V2): New.
      	(struct ld_plugin_tv): Add tv_register_claim_file_v2.
      
      	lto-plugin/
      	* lto-plugin.c (register_claim_file_v2): New.
      	(claim_file_handler_v2): New.
      	(claim_file_handler): Wrap claim_file_handler_v2.
      	(onload): Handle LDPT_REGISTER_CLAIM_FILE_HOOK_V2.
      c49d51fa
  4. Apr 29, 2023
  5. Apr 28, 2023
    • Roger Sayle's avatar
      Synchronize include/ctf.h with upstream binutils/libctf. · fde00589
      Roger Sayle authored
      This patch updates include/ctf.h to match the current libctf version in
      binutils' include/.  I recently attempted to build a uber tree (following
      some notes that are so old they used CVS) and noticed that binutils won't
      build with gcc's top-level include, due to CTF_F_IDXSORTED not being
      defined in ctf.h.
      
      2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
      
      include/ChangeLog
      	* ctf.h: Import latest version from binutils/libctf.
      fde00589
  6. Apr 20, 2023
  7. Apr 19, 2023
    • Max Filippov's avatar
      gcc: xtensa: add data alignment properties to dynconfig · ec9b3087
      Max Filippov authored
      gcc/
      	* config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
      	function.
      
      include/
      	* xtensa-dynconfig.h (xtensa_config_v4): New struct.
      	(XCHAL_DATA_WIDTH, XCHAL_UNALIGNED_LOAD_EXCEPTION)
      	(XCHAL_UNALIGNED_STORE_EXCEPTION, XCHAL_UNALIGNED_LOAD_HW)
      	(XCHAL_UNALIGNED_STORE_HW, XTENSA_CONFIG_V4_ENTRY_LIST): New
      	definitions.
      	(XTENSA_CONFIG_INSTANCE_LIST): Add xtensa_config_v4 instance.
      	(XTENSA_CONFIG_ENTRY_LIST): Add XTENSA_CONFIG_V4_ENTRY_LIST.
      ec9b3087
  8. Feb 28, 2023
  9. Feb 27, 2023
    • Max Filippov's avatar
      gcc: xtensa: add XCHAL_HAVE_{CLAMPS,DEPBITS,EXCLUSIVE,XEA3} to dynconfig · 999b7aab
      Max Filippov authored
      gcc/
      	* config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
      	(xtensa_get_config_v3): New functions.
      
      include/
      	* xtensa-dynconfig.h (xtensa_config_v3): New struct.
      	(xtensa_get_config_v3): New declaration.
      	(XCHAL_HAVE_CLAMPS, XCHAL_HAVE_DEPBITS, XCHAL_HAVE_EXCLUSIVE)
      	(XCHAL_HAVE_XEA3, XTENSA_CONFIG_V3_ENTRY_LIST): New definitions.
      	(XTENSA_CONFIG_INSTANCE_LIST): Add xtensa_config_v3 instance.
      	(XTENSA_CONFIG_ENTRY_LIST): Add XTENSA_CONFIG_V3_ENTRY_LIST.
      999b7aab
  10. Feb 03, 2023
  11. Feb 02, 2023
    • Andrew Stubbs's avatar
      amdgcn, libgomp: Manually allocated stacks · f6fff8a6
      Andrew Stubbs authored
      Switch from using stacks in the "private segment" to using a memory block
      allocated on the host side.  The primary reason is to permit the reverse
      offload implementation to access values located on the device stack, but
      there may also be performance benefits, especially with repeated kernel
      invocations.
      
      This implementation unifies the stacks with the "team arena" optimization
      feature, and now allows both to have run-time configurable sizes.
      
      A new ABI is needed, so all libraries must be rebuilt, and newlib must be
      version 4.3.0.20230120 or newer.
      
      gcc/ChangeLog:
      
      	* config/gcn/gcn-run.cc: Include libgomp-gcn.h.
      	(struct kernargs): Replace the common content with kernargs_abi.
      	(struct heap): Delete.
      	(main): Read GCN_STACK_SIZE envvar.
      	Allocate space for the device stacks.
      	Write the new kernargs fields.
      	* config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
      	(default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
      	PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
      	(gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
      	(gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
      	Set up the stacks from the values in the kernargs, not private.
      	(gcn_expand_builtin_1): Match the stack configuration in the prologue.
      	(gcn_hsa_declare_function_name): Turn off the private segment.
      	(gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
      	* config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
      	* config/gcn/gcn.opt (mstack-size): Change the description.
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_VERSION_GCN): Bump.
      
      libgomp/ChangeLog:
      
      	* config/gcn/libgomp-gcn.h (DEFAULT_GCN_STACK_SIZE): New define.
      	(DEFAULT_TEAM_ARENA_SIZE): New define.
      	(struct heap): Move to this file.
      	(struct kernargs_abi): Likewise.
      	* config/gcn/team.c (gomp_gcn_enter_kernel): Use team arena size from
      	the kernargs.
      	* libgomp.h: Include libgomp-gcn.h.
      	(TEAM_ARENA_SIZE): Remove.
      	(team_malloc): Update the error message.
      	* plugin/plugin-gcn.c (struct kernargs): Move common content to
      	struct kernargs_abi.
      	(struct agent_info): Rename team arenas to ephemeral memories.
      	(struct team_arena_list): Rename ....
      	(struct ephemeral_memories_list): to this.
      	(struct heap): Delete.
      	(team_arena_size): New variable.
      	(stack_size): New variable.
      	(print_kernel_dispatch): Update debug messages.
      	(init_environment_variables): Read GCN_TEAM_ARENA_SIZE.
      	Read GCN_STACK_SIZE.
      	(get_team_arena): Rename ...
      	(configure_ephemeral_memories): ... to this, and set up stacks.
      	(release_team_arena): Rename ...
      	(release_ephemeral_memories): ... to this.
      	(destroy_team_arenas): Rename ...
      	(destroy_ephemeral_memories): ... to this.
      	(create_kernel_dispatch): Add num_threads parameter.
      	Adjust for kernargs_abi refactor and ephemeral memories.
      	(release_kernel_dispatch): Adjust for ephemeral memories.
      	(run_kernel): Pass thread-count to create_kernel_dispatch.
      	(GOMP_OFFLOAD_init_device): Adjust for ephemeral memories.
      	(GOMP_OFFLOAD_fini_device): Adjust for ephemeral memories.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.c-torture/execute/pr47237.c: Xfail on amdgcn.
      	* gcc.dg/builtin-apply3.c: Xfail for amdgcn.
      	* gcc.dg/builtin-apply4.c: Xfail for amdgcn.
      	* gcc.dg/torture/stackalign/builtin-apply-3.c: Xfail for amdgcn.
      	* gcc.dg/torture/stackalign/builtin-apply-4.c: Xfail for amdgcn.
      f6fff8a6
  12. Jan 16, 2023
  13. Dec 22, 2022
  14. Dec 21, 2022
    • Jason Merrill's avatar
      c++: source position of lambda captures [PR84471] · 302485a7
      Jason Merrill authored
      If the DECL_VALUE_EXPR of a VAR_DECL has EXPR_LOCATION set, then any use of
      that variable looks like it has that location, which leads to the debugger
      jumping back and forth for both lambdas and structured bindings.
      
      Rather than fix all the uses, it seems simplest to remove any EXPR_LOCATION
      when setting DECL_VALUE_EXPR.  So the cp/ hunks aren't necessary, but they
      avoid the need to unshare to remove the location.
      
      	PR c++/84471
      	PR c++/107504
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (transform_local_var_uses): Don't
      	specify a location for DECL_VALUE_EXPR.
      	* decl.cc (cp_finish_decomp): Likewise.
      
      gcc/ChangeLog:
      
      	* fold-const.cc (protected_set_expr_location_unshare): Not static.
      	* tree.h: Declare it.
      	* tree.cc (decl_value_expr_insert): Use it.
      
      include/ChangeLog:
      
      	* ansidecl.h (ATTRIBUTE_WARN_UNUSED_RESULT): Add __.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/tree-ssa/value-expr1.C: New test.
      	* g++.dg/tree-ssa/value-expr2.C: New test.
      	* g++.dg/analyzer/pr93212.C: Move warning.
      302485a7
  15. Dec 15, 2022
  16. Dec 14, 2022
    • David Faust's avatar
      btf: correct generation for extern funcs [PR106773] · 70b30304
      David Faust authored
      The eBPF loader expects to find entries for functions declared as extern
      in the corresponding BTF_KIND_DATASEC record, but we were not generating
      these entries.
      
      This patch adds support for the 'extern' linkage of function types in
      BTF, and creates entries for for them BTF_KIND_DATASEC records as needed.
      
      	PR target/106773
      
      gcc/
      
      	* btfout.cc (get_section_name): New function.
      	(btf_collect_datasec): Use it here. Process functions, marking them
      	'extern' and generating DATASEC entries for them as appropriate. Move
      	creation of BTF_KIND_FUNC records to here...
      	(btf_dtd_emit_preprocess_cb): ... from here.
      
      gcc/testsuite/
      
      	* gcc.dg/debug/btf/btf-datasec-2.c: New test.
      	* gcc.dg/debug/btf/btf-function-6.c: New test.
      
      include/
      
      	* btf.h (enum btf_func_linkage): New.
      	(struct btf_var_secinfo): Update comments with notes about extern
      	functions.
      70b30304
    • David Faust's avatar
      btf: add 'extern' linkage for variables [PR106773] · 2bce22e8
      David Faust authored
      Add support for the 'extern' linkage value for BTF_KIND_VAR records,
      which is used for variables declared as extern in the source file.
      
      This also fixes a bug with BTF generation for extern variables which
      have both a non-defining declaration and a defining declaration in the
      same CU.
      
      	PR target/106773
      
      gcc/
      
      	* btfout.cc (btf_collect_datasec): Mark extern variables as such.
      	(btf_dvd_emit_preprocess_cb): Skip non-defining extern variable decl
      	if there is a defining decl for the same variable.
      	(btf_asm_varent): Accomodate 'extern' linkage.
      
      gcc/testsuite/
      
      	* gcc.dg/debug/btf/btf-variables-4.c: New test.
      	* gcc.dg/debug/btf/btf-variables-5.c: New test.
      
      include/
      
      	* btf.h (enum btf_var_linkage): New.
      	(struct btf_var): Update comment to note 'extern' linkage.
      2bce22e8
  17. Dec 08, 2022
  18. Dec 07, 2022
    • Max Filippov's avatar
      gcc: xtensa: allow dynamic configuration · ecb575d0
      Max Filippov authored
      Import include/xtensa-dynconfig.h that defines XCHAL_* macros as fields
      of a structure returned from the xtensa_get_config_v<x> function call.
      Define that structure and fill it with default parameter values
      specified in the include/xtensa-config.h.
      Define reusable function xtensa_load_config that tries to load
      configuration and return an address of an exported object from it.
      Define the function xtensa_get_config_v1 that uses xtensa_load_config
      to get structure xtensa_config_v1, either dynamically configured or the
      default.
      
      Provide essential XCHAL_* configuration parameters as __XCHAL_* built-in
      macros. This way it will be possible to use them in libgcc and libc
      without need to patch libgcc or libc source for the specific xtensa core
      configuration.
      
      gcc/
      	* config.gcc (xtensa*-*-*): Add xtensa-dynconfig.o to extra_objs.
      	* config/xtensa/t-xtensa (TM_H): Add xtensa-dynconfig.h.
      	(xtensa-dynconfig.o): New rule.
      	* config/xtensa/xtensa-dynconfig.c: New file.
      	* config/xtensa/xtensa-protos.h (xtensa_get_config_strings): New
      	declaration.
      	* config/xtensa/xtensa.h (xtensa-config.h): Replace #include
      	with xtensa-dynconfig.h
      	(XCHAL_HAVE_MUL32_HIGH, XCHAL_HAVE_RELEASE_SYNC)
      	(XCHAL_HAVE_S32C1I, XCHAL_HAVE_THREADPTR)
      	(XCHAL_HAVE_FP_POSTINC): Drop definitions.
      	(TARGET_DIV32): Replace with __XCHAL_HAVE_DIV32.
      	(TARGET_CPU_CPP_BUILTINS): Add new 'builtin' variable and loop
      	through string array returned by the xtensa_get_config_strings
      	function call.
      
      include/
      	* xtensa-dynconfig.h: New file.
      ecb575d0
  19. Nov 16, 2022
  20. Nov 15, 2022
    • Nathan Sidwell's avatar
      demangler: Templated lambda demangling · 46c3d9c8
      Nathan Sidwell authored
      Templated lambdas have a template-head, which is part of their
      signature.  GCC ABI 18 mangles that into the lambda name.  This adds
      support to the demangler.  We have to introduce artificial template
      parameter names, as we need to refer to them from later components of
      the lambda signature. We use $T:n, $N:n and $TT:n for type, non-type
      and template parameters.  Non-type parameter names are not shown in
      the strictly correct location -- for instance 'int (&NT) ()' would be
      shown as 'int (&) $N:n'.  That's unfortunate, but an orthogonal issue.
      The 'is_lambda_arg' field is now repurposed as indicating the number
      of explicit template parameters (1-based).
      
      	include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_TEMPLATE_HEAD,
      	DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM.
      	libiberty/
      	* cp-demangle.c (struct d_print_info): Rename is_lambda_arg to
      	lambda_tpl_parms.  Augment semantics.
      	(d_make_comp): Add checks for new components.
      	(d_template_parm, d_template_head): New.
      	(d_lambda): Add templated lambda support.
      	(d_print_init): Adjust.
      	(d_print_lambda_parm_name): New.
      	(d_print_comp_inner): Support templated lambdas,
      	* testsuite/demangle-expected: Add testcases.
      46c3d9c8
  21. Nov 06, 2022
  22. Nov 04, 2022
    • Thomas Schwinge's avatar
      Remove support for Intel MIC offloading · e4cba494
      Thomas Schwinge authored
      ... after its deprecation in GCC 12.
      
      	* Makefile.def: Remove module 'liboffloadmic'.
      	* Makefile.in: Regenerate.
      	* configure.ac: Remove 'liboffloadmic' handling.
      	* configure: Regenerate.
      	contrib/
      	* gcc-changelog/git_commit.py (default_changelog_locations):
      	Remove 'liboffloadmic'.
      	* gcc_update (files_and_dependencies): Remove 'liboffloadmic'
      	files.
      	* update-copyright.py (GCCCmdLine): Remove 'liboffloadmic'
      	comment.
      	gcc/
      	* config.gcc [target *-intelmic-* | *-intelmicemul-*]: Remove.
      	* config/i386/i386-options.cc (ix86_omp_device_kind_arch_isa)
      	[ACCEL_COMPILER]: Remove.
      	* config/i386/intelmic-mkoffload.cc: Remove.
      	* config/i386/intelmic-offload.h: Likewise.
      	* config/i386/t-intelmic: Likewise.
      	* config/i386/t-omp-device: Likewise.
      	* configure.ac [target *-intelmic-* | *-intelmicemul-*]: Remove.
      	* configure: Regenerate.
      	* doc/install.texi (--enable-offload-targets=[...]): Update.
      	* doc/sourcebuild.texi: Remove 'liboffloadmic' documentation.
      	include/
      	* gomp-constants.h (GOMP_DEVICE_INTEL_MIC): Comment out.
      	(GOMP_VERSION_INTEL_MIC): Remove.
      	libgomp/
      	* libgomp-plugin.h (OFFLOAD_TARGET_TYPE_INTEL_MIC): Remove.
      	* libgomp.texi (OpenMP Context Selectors): Remove Intel MIC
      	documentation.
      	* plugin/configfrag.ac <enable_offload_targets>
      	[*-intelmic-* | *-intelmicemul-*]: Remove.
      	* configure: Regenerate.
      	* testsuite/lib/libgomp.exp (libgomp_init): Remove 'liboffloadmic'
      	handling.
      	(offload_target_to_openacc_device_type)
      	[$offload_target = *-intelmic*]: Remove.
      	(check_effective_target_offload_device_intel_mic)
      	(check_effective_target_offload_device_any_intel_mic): Remove.
      	* testsuite/libgomp.c-c++-common/on_device_arch.h
      	(device_arch_intel_mic, on_device_arch_intel_mic, any_device_arch)
      	(any_device_arch_intel_mic): Remove.
      	* testsuite/libgomp.c-c++-common/target-45.c: Remove
      	'offload_device_any_intel_mic' XFAIL.
      	* testsuite/libgomp.fortran/target10.f90: Likewise.
      	liboffloadmic/
      	* ChangeLog: Remove.
      	* Makefile.am: Likewise.
      	* Makefile.in: Likewise.
      	* aclocal.m4: Likewise.
      	* configure: Likewise.
      	* configure.ac: Likewise.
      	* configure.tgt: Likewise.
      	* doc/doxygen/config: Likewise.
      	* doc/doxygen/header.tex: Likewise.
      	* include/coi/common/COIEngine_common.h: Likewise.
      	* include/coi/common/COIEvent_common.h: Likewise.
      	* include/coi/common/COIMacros_common.h: Likewise.
      	* include/coi/common/COIPerf_common.h: Likewise.
      	* include/coi/common/COIResult_common.h: Likewise.
      	* include/coi/common/COISysInfo_common.h: Likewise.
      	* include/coi/common/COITypes_common.h: Likewise.
      	* include/coi/sink/COIBuffer_sink.h: Likewise.
      	* include/coi/sink/COIPipeline_sink.h: Likewise.
      	* include/coi/sink/COIProcess_sink.h: Likewise.
      	* include/coi/source/COIBuffer_source.h: Likewise.
      	* include/coi/source/COIEngine_source.h: Likewise.
      	* include/coi/source/COIEvent_source.h: Likewise.
      	* include/coi/source/COIPipeline_source.h: Likewise.
      	* include/coi/source/COIProcess_source.h: Likewise.
      	* liboffloadmic_host.spec.in: Likewise.
      	* liboffloadmic_target.spec.in: Likewise.
      	* plugin/Makefile.am: Likewise.
      	* plugin/Makefile.in: Likewise.
      	* plugin/aclocal.m4: Likewise.
      	* plugin/configure: Likewise.
      	* plugin/configure.ac: Likewise.
      	* plugin/libgomp-plugin-intelmic.cpp: Likewise.
      	* plugin/offload_target_main.cpp: Likewise.
      	* runtime/cean_util.cpp: Likewise.
      	* runtime/cean_util.h: Likewise.
      	* runtime/coi/coi_client.cpp: Likewise.
      	* runtime/coi/coi_client.h: Likewise.
      	* runtime/coi/coi_server.cpp: Likewise.
      	* runtime/coi/coi_server.h: Likewise.
      	* runtime/compiler_if_host.cpp: Likewise.
      	* runtime/compiler_if_host.h: Likewise.
      	* runtime/compiler_if_target.cpp: Likewise.
      	* runtime/compiler_if_target.h: Likewise.
      	* runtime/dv_util.cpp: Likewise.
      	* runtime/dv_util.h: Likewise.
      	* runtime/emulator/coi_common.h: Likewise.
      	* runtime/emulator/coi_device.cpp: Likewise.
      	* runtime/emulator/coi_device.h: Likewise.
      	* runtime/emulator/coi_host.cpp: Likewise.
      	* runtime/emulator/coi_host.h: Likewise.
      	* runtime/emulator/coi_version_asm.h: Likewise.
      	* runtime/emulator/coi_version_linker_script.map: Likewise.
      	* runtime/liboffload_error.c: Likewise.
      	* runtime/liboffload_error_codes.h: Likewise.
      	* runtime/liboffload_msg.c: Likewise.
      	* runtime/liboffload_msg.h: Likewise.
      	* runtime/mic_lib.f90: Likewise.
      	* runtime/offload.h: Likewise.
      	* runtime/offload_common.cpp: Likewise.
      	* runtime/offload_common.h: Likewise.
      	* runtime/offload_engine.cpp: Likewise.
      	* runtime/offload_engine.h: Likewise.
      	* runtime/offload_env.cpp: Likewise.
      	* runtime/offload_env.h: Likewise.
      	* runtime/offload_host.cpp: Likewise.
      	* runtime/offload_host.h: Likewise.
      	* runtime/offload_iterator.h: Likewise.
      	* runtime/offload_omp_host.cpp: Likewise.
      	* runtime/offload_omp_target.cpp: Likewise.
      	* runtime/offload_orsl.cpp: Likewise.
      	* runtime/offload_orsl.h: Likewise.
      	* runtime/offload_table.cpp: Likewise.
      	* runtime/offload_table.h: Likewise.
      	* runtime/offload_target.cpp: Likewise.
      	* runtime/offload_target.h: Likewise.
      	* runtime/offload_target_main.cpp: Likewise.
      	* runtime/offload_timer.h: Likewise.
      	* runtime/offload_timer_host.cpp: Likewise.
      	* runtime/offload_timer_target.cpp: Likewise.
      	* runtime/offload_trace.cpp: Likewise.
      	* runtime/offload_trace.h: Likewise.
      	* runtime/offload_util.cpp: Likewise.
      	* runtime/offload_util.h: Likewise.
      	* runtime/ofldbegin.cpp: Likewise.
      	* runtime/ofldend.cpp: Likewise.
      	* runtime/orsl-lite/include/orsl-lite.h: Likewise.
      	* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
      	* runtime/orsl-lite/version.txt: Likewise.
      e4cba494
  23. Nov 01, 2022
  24. Oct 31, 2022
    • Guillermo E. Martinez's avatar
      btf: Add support to BTF_KIND_ENUM64 type · 8422861b
      Guillermo E. Martinez authored
      BTF supports 64-bits enumerators with following encoding:
      
        struct btf_type:
          name_off: 0 or offset to a valid C identifier
          info.kind_flag: 0 for unsigned, 1 for signed
          info.kind: BTF_KIND_ENUM64
          info.vlen: number of enum values
          size: 1/2/4/8
      
      The btf_type is followed by info.vlen number of:
      
          struct btf_enum64
          {
            uint32_t name_off;   /* Offset in string section of enumerator name.  */
            uint32_t val_lo32;   /* lower 32-bit value for a 64-bit value Enumerator */
            uint32_t val_hi32;   /* high 32-bit value for a 64-bit value Enumerator */
          };
      
      So, a new btf_enum64 structure was added to represent BTF_KIND_ENUM64
      and a new field dtd_enum_unsigned in ctf_dtdef structure to distinguish
      when CTF enum is a signed or unsigned type, later that information is
      used to encode the BTF enum type.
      
      gcc/ChangeLog:
      
      	* btfout.cc (btf_calc_num_vbytes): Compute enumeration size depending of
      	enumerator type btf_enum{,64}.
      	(btf_asm_type): Update btf_kflag according to enumeration type sign
      	using dtd_enum_unsigned field for both:  BTF_KIND_ENUM{,64}.
      	(btf_asm_enum_const): New argument to represent the size of
      	the BTF enum type, writing the enumerator constant value for
      	32 bits, if it's 64 bits then explicitly writes lower 32-bits
      	value and higher 32-bits value.
      	(output_asm_btf_enum_list): Add enumeration size argument.
      	* ctfc.cc (ctf_add_enum): New argument to represent CTF enum
      	basic information.
      	(ctf_add_generic): Use of ei_{name. size, unsigned} to build the
      	dtd structure containing enumeration information.
      	(ctf_add_enumerator): Update comment mention support for BTF
      	enumeration in 64-bits.
      	* dwarf2ctf.cc (gen_ctf_enumeration_type): Extract signedness
      	for enumeration type and use it in ctf_add_enum.
      	* ctfc.h (ctf_dmdef): Update dmd_value to HOST_WIDE_INT to allow
      	use 32/64 bits enumerators.
      	information.
      	(ctf_dtdef): New field to describe enum signedness.
      
      include/
      	* btf.h (btf_enum64): Add new definition and new symbolic
      	constant to BTF_KIND_ENUM64 and BTF_KF_ENUM_{UN,}SIGNED.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/debug/btf/btf-enum-1.c: Update testcase, with correct
      	info.kflags encoding.
      	* gcc.dg/debug/btf/btf-enum64-1.c: New testcase.
      8422861b
    • Lulu Cheng's avatar
      Libvtv: Add loongarch support. · 27b9e115
      Lulu Cheng authored
      
      The loongarch64 specification permits page sizes of 4KiB, 16KiB and 64KiB,
      but only 16KiB pages are supported for now.
      
      Co-Authored-By: default avatarqijingwen <qijingwen@loongson.cn>
      
      include/ChangeLog:
      
      	* vtv-change-permission.h (defined): Determines whether the macro
      	__loongarch_lp64 is defined
      	(VTV_PAGE_SIZE): Set VTV_PAGE_SIZE to 16KiB for loongarch64.
      
      libvtv/ChangeLog:
      
      	* configure.tgt: Add loongarch support.
      27b9e115
  25. Oct 25, 2022
  26. Oct 24, 2022
    • Tobias Burnus's avatar
      libgomp/nvptx: Prepare for reverse-offload callback handling · 131d18e9
      Tobias Burnus authored
      This patch adds a stub 'gomp_target_rev' in the host's target.c, which will
      later handle the reverse offload.
      For nvptx, it adds support for forwarding the offload gomp_target_ext call
      to the host by setting values in a struct on the device and querying it on
      the host - invoking gomp_target_rev on the result.
      
      include/ChangeLog:
      
      	* cuda/cuda.h (enum CUdevice_attribute): Add
      	CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING.
      	(CU_MEMHOSTALLOC_DEVICEMAP): Define.
      	(cuMemHostAlloc): Add prototype.
      
      libgomp/ChangeLog:
      
      	* config/nvptx/icv-device.c (GOMP_DEVICE_NUM_VAR): Remove
      	'static' for this variable.
      	* config/nvptx/libgomp-nvptx.h: New file.
      	* config/nvptx/target.c: Include it.
      	(GOMP_ADDITIONAL_ICVS): Declare extern var.
      	(GOMP_REV_OFFLOAD_VAR): Declare var.
      	(GOMP_target_ext): Handle reverse offload.
      	* libgomp-plugin.h (GOMP_PLUGIN_target_rev): New prototype.
      	* libgomp-plugin.c (GOMP_PLUGIN_target_rev): New, call ...
      	* target.c (gomp_target_rev): ... this new stub function.
      	* libgomp.h (gomp_target_rev): Declare.
      	* libgomp.map (GOMP_PLUGIN_1.4): New; add GOMP_PLUGIN_target_rev.
      	* plugin/cuda-lib.def (cuMemHostAlloc): Add.
      	* plugin/plugin-nvptx.c: Include libgomp-nvptx.h.
      	(struct ptx_device): Add rev_data member.
      	(nvptx_open_device): Remove async_engines query, last used in
      	r10-304-g1f4c5b9b; add unified-address assert check.
      	(GOMP_OFFLOAD_get_num_devices): Claim unified address
      	support.
      	(GOMP_OFFLOAD_load_image): Free rev_fn_table if no
      	offload functions exist. Make offload var available
      	on host and device.
      	(rev_off_dev_to_host_cpy, rev_off_host_to_dev_cpy): New.
      	(GOMP_OFFLOAD_run): Handle reverse offload.
      131d18e9
  27. Oct 21, 2022
  28. Oct 20, 2022
    • Tobias Burnus's avatar
      libgomp: Add offload_device_gcn check, add requires-4a.c test · 12d9f5af
      Tobias Burnus authored
      Duplicate libgomp.c-c++-common/requires-4.c (as ...-4a.c) but
      with using a heap-allocated instead of static memory for a variable.
      
      This change and the added offload_device_gcn check prepare for
      pseudo-USM, where the device hardware cannot access all host
      memory but only managed and pinned memory; for those, requires-4.c
      will fail and the new check permits to add
        target { ! { offload_device_nvptx || offload_device_gcn } }
      to requires-4.c; however, it has not been added yet as pseuo-USM
      support is not yet on mainline. (Review is pending for the USM
      patches.)
      
      include/ChangeLog:
      
      	* gomp-constants.h (GOMP_DEVICE_HSA): Comment out unused define.
      
      libgomp/ChangeLog:
      
      	* testsuite/lib/libgomp.exp (check_effective_target_offload_device_gcn):
      	New.
      	* testsuite/libgomp.c-c++-common/on_device_arch.h (device_arch_gcn,
      	on_device_arch_gcn): New.
      	* testsuite/libgomp.c-c++-common/requires-4a.c: New test; copied from
      	requires-4.c but using heap-allocated memory.
      12d9f5af
  29. Oct 14, 2022
  30. Oct 13, 2022
    • Xi Ruoyao's avatar
      LoongArch: implement count_{leading,trailing}_zeros · 6f653a2c
      Xi Ruoyao authored
      LoongArch always support clz and ctz instructions, so we can always use
      __builtin_{clz,ctz} for count_{leading,trailing}_zeros.  This improves
      the code of libgcc, and also benefits Glibc once we merge longlong.h
      there.
      
      Bootstrapped and regtested on loongarch64-linux-gnu.
      
      include/ChangeLog:
      
      	* longlong.h [__loongarch__] (count_leading_zeros): Define.
      	[__loongarch__] (count_trailing_zeros): Likewise.
      	[__loongarch__] (COUNT_LEADING_ZEROS_0): Likewise.
      6f653a2c
  31. Sep 28, 2022
  32. Sep 27, 2022
    • Jakub Jelinek's avatar
      c++: Implement P1467R9 - Extended floating-point types and standard names... · b0420889
      Jakub Jelinek authored
      c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
      
      The following patch implements the compiler part of C++23
      P1467R9 - Extended floating-point types and standard names compiler part
      by introducing _Float{16,32,64,128} as keywords and builtin types
      like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
      mangling.
      It also introduces _Float{32,64,128}x for C++ with the
      https://github.com/itanium-cxx-abi/cxx-abi/pull/147
      proposed mangling of DF{32,64,128}x.
      The patch doesn't add anything for bfloat16_t support, as right now
      __bf16 type refuses all conversions and arithmetic operations.
      The patch wants to keep backwards compatibility with how __float128 has
      been handled in C++ before, both for mangling and behavior in binary
      operations, overload resolution etc.  So, there are some backend changes
      where for C __float128 and _Float128 are the same type (float128_type_node
      and float128t_type_node are the same pointer), but for C++ they are distinct
      types which mangle differently and _Float128 is treated as extended
      floating-point type while __float128 is treated as non-standard floating
      point type.  The various C++23 changes about how floating-point types
      are changed are actually implemented as written in the spec only if at least
      one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
      also treated as extended floating-point types) and kept previous behavior
      otherwise.  For float/double/long double the rules are actually written that
      they behave the same as before.
      There is some backwards incompatibility at least on x86 regarding _Float16,
      because that type was already used by that name and with the DF16_ mangling
      (but only since GCC 12 and I think it isn't that widely used in the wild
      yet).  E.g. config/i386/avx512fp16intrin.h shows the issues, where
      in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
      argument, but with the changes that is not possible anymore, one needs
      to either use 0.0f16 or (_Float16) 0.0f.
      We have also a problem with glibc headers, where since glibc 2.27
      math.h and complex.h aren't compilable with these changes.  One gets
      errors like:
      In file included from /usr/include/math.h:43,
                       from abc.c:1:
      /usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
         86 | typedef __float128 _Float128;
            |         ^~~~~~~~~~
      /usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
         86 | typedef __float128 _Float128;
            |                    ^~~~~~~~~
      In file included from /usr/include/bits/floatn.h:119:
      /usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
        214 | typedef float _Float32;
            |         ^~~~~
      /usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
        214 | typedef float _Float32;
            |               ^~~~~~~~
      /usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
        251 | typedef double _Float64;
            |         ^~~~~~
      /usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
        251 | typedef double _Float64;
            |                ^~~~~~~~
      This is from snippets like:
       /* The remaining of this file provides support for older compilers.  */
       # if __HAVE_FLOAT128
      
       /* The type _Float128 exists only since GCC 7.0.  */
       #  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
       typedef __float128 _Float128;
       #  endif
      where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
      {f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
      The patch fixincludes this for now and hopefully if this is committed, then
      glibc can change those.  The patch changes those
       #  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
      conditions to
       #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
      Another thing is mangling, as said above, Itanium C++ ABI specifies
      DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
      a mangling incompatible with that starting with DF for fixed point types.
      Fixed point was never supported in C++ though, I believe the reason why
      the mangling has been added was that due to a bug it would leak into the
      C++ FE through decltype (0.0r) etc.  But that has been shortly after the
      mangling was added fixed (I think in the same GCC release cycle), so we
      now reject 0.0r etc. in C++.  If we ever need the fixed point mangling,
      I think it can be readded but better with a different prefix so that it
      doesn't conflict with the published standard manglings.  So, this patch
      also kills the fixed point mangling and implements the DF <number> _
      demangling.
      The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
      those types are available, but only for C++23, while the underlying types
      are available in C++98 and later including the {f,F}{16,32,64,128} literal
      suffixes (but those with a pedwarn for C++20 and earlier).  My understanding
      is that it needs to be predefined by the compiler, on the other side
      predefining even for older modes when <stdfloat> is a new C++23 header
      would be weird.  One can find out if _Float{16,32,64,128,32x,64x,128x} is
      supported in C++ by
      __GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
      (but that doesn't work well with older G++ 13 snapshots).
      
      As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
      "support" __bf16 type which has the bfloat16 format, but isn't really
      usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
      from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
      any unary operations on those except for ADDR_EXPR and
      {aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
      those.  So, I think we satisfy:
      "If the implementation supports an extended floating-point type with the
      properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
      width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
      of 127, and exponent field width in bits (w) of 8, then the typedef-name
      std::bfloat16_t is defined in the header <stdfloat> and names such a type,
      the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
      suffixes bf16 and BF16 are supported."
      because we don't really support those right now.
      
      2022-09-27  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/106652
      	PR c++/85518
      gcc/
      	* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
      	enumerator.
      	* tree.h (float128t_type_node): Define.
      	* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
      	* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
      	_Float<N> is supported in C++ too.
      	* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
      	float128t_type_node.
      	* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      	* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
      	_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
      	0.0f.
      	* config/ia64/ia64.cc (ia64_init_builtins): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      	* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
      	for float128t_type_node if non-NULL.
      	* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
      	float128_type_node as "u9__ieee128".
      	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
      	float128t_type_node for __float128 instead of float128_type_node
      	and create it if NULL.
      gcc/c-family/
      	* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
      	_Float{32,64,128}x flags from D_CONLY to 0.
      	(shorten_binary_op): Punt if common_type returns error_mark_node.
      	(shorten_compare): Likewise.
      	(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
      	and _Float{32,64,128}x builtin types if available.  For C++
      	clear float128t_type_node.
      	* c-cppbuiltin.cc (c_cpp_builtins): Predefine
      	__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
      	* c-lex.cc (interpret_float): For q/Q suffixes prefer
      	float128t_type_node over float128_type_node.  Allow
      	{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
      	for C++20 and older.  Allow {f,F}{32,64,128}x suffixes for C++
      	with pedwarn.  Don't call excess_precision_type for C++.
      gcc/cp/
      	* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
      	P1467R9 - Extended floating-point types and standard names except
      	for std::bfloat16_t for now.  Declare.
      	(extended_float_type_p): New inline function.
      	* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
      	as DF{16,32,64,128}_.  Mangle float{32,64,128}x_type_node as
      	DF{32,64,128}x.  Remove FIXED_POINT_TYPE mangling that conflicts
      	with that.
      	* typeck2.cc (check_narrowing): If one of ftype or type is extended
      	floating-point type, compare floating-point conversion ranks.
      	* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
      	CASE_RID_FLOATN_NX.
      	(cp_parser_simple_type_specifier): Likewise and diagnose missing
      	_Float<N> or _Float<N>x support if not supported by target.
      	* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
      	(cp_common_type): If both types are REAL_TYPE and one or both are
      	extended floating-point types, select common type based on comparison
      	of floating-point conversion ranks and subranks.
      	(cp_build_binary_op): Diagnose operation with floating point arguments
      	with unordered conversion ranks.
      	* call.cc (standard_conversion): For floating-point conversion, if
      	either from or to are extended floating-point types, set conv->bad_p
      	for implicit conversion from larger to smaller conversion rank or
      	with unordered conversion ranks.
      	(convert_like_internal): Emit a pedwarn on such conversions.
      	(build_conditional_expr): Diagnose operation with floating point
      	arguments with unordered conversion ranks.
      	(convert_arg_to_ellipsis): Don't promote extended floating-point types
      	narrower than double to double.
      	(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
      gcc/testsuite/
      	* g++.dg/cpp23/ext-floating1.C: New test.
      	* g++.dg/cpp23/ext-floating2.C: New test.
      	* g++.dg/cpp23/ext-floating3.C: New test.
      	* g++.dg/cpp23/ext-floating4.C: New test.
      	* g++.dg/cpp23/ext-floating5.C: New test.
      	* g++.dg/cpp23/ext-floating6.C: New test.
      	* g++.dg/cpp23/ext-floating7.C: New test.
      	* g++.dg/cpp23/ext-floating8.C: New test.
      	* g++.dg/cpp23/ext-floating9.C: New test.
      	* g++.dg/cpp23/ext-floating10.C: New test.
      	* g++.dg/cpp23/ext-floating.h: New file.
      	* g++.target/i386/float16-1.C: Adjust expected diagnostics.
      libcpp/
      	* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
      	{f,F}{32,64,128}x suffixes for C++.
      include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
      	(struct demangle_component): Add u.s_extended_builtin member.
      libiberty/
      	* cp-demangle.c (d_dump): Handle
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Don't handle
      	DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_make_extended_builtin_type): New function.
      	(cplus_demangle_builtin_types): Add _Float entry.
      	(cplus_demangle_type): For DF demangle it as _Float<N> or
      	_Float<N>x rather than fixed point which conflicts with it.
      	(d_count_templates_scopes): Handle
      	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Just break; for
      	DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
      	Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
      	(d_print_comp_inner): Likewise.
      	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
      	* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
      	with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb.  Add
      	_Z3xxxDF32xDF64xDF128xCDF32xVb test.
      fixincludes/
      	* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
      	glibc_cxx_floatn_3): New fixes.
      	* tests/base/bits/floatn.h: New file.
      	* fixincl.x: Regenerated.
      b0420889
    • Meghan Denny's avatar
      Updated constants from <https://dwarfstd.org/Languages.php> · 8be65640
      Meghan Denny authored
      include
      	* dwarf2.h: Update with additional languages from dwarf
      	standard.
      8be65640
  33. Jul 13, 2022
  34. Jul 12, 2022
    • Martin Liska's avatar
      lto-plugin: implement LDPT_GET_API_VERSION · 32a75350
      Martin Liska authored
      include/ChangeLog:
      
      	* plugin-api.h (enum linker_api_version): New enum.
      	(ld_plugin_get_api_version): New.
      	(enum ld_plugin_tag): Add LDPT_GET_API_VERSION.
      	(struct ld_plugin_tv): Add tv_get_api_version.
      
      lto-plugin/ChangeLog:
      
      	* lto-plugin.c (negotiate_api_version): New.
      	(onload): Negotiate API version.
      	* Makefile.am: Add -DBASE_VERSION.
      	* Makefile.in: Regenerate.
      32a75350
  35. Jul 07, 2022
  36. Jul 06, 2022
  37. Jul 05, 2022
Loading