Skip to content
Snippets Groups Projects
  1. Nov 18, 2024
    • Jeff Law's avatar
      Fix more c23 bool fallout · 1100c057
      Jeff Law authored
      While these haven't shown up in my tester (not configs I test) and I think
      we're likely going to be deprecating the nds32 target. we might as well go
      ahead and fix them.
      
      I'm going to include this under the pr117628 umbrella.
      
      	PR target/117628
      
      libgcc/
      	* config/arm/freebsd-atomic.c (bool): Remove unnecessary typedef.
      	* config/arm/linux-atomic-64bit.c: Likewise.
      	* config/arm/linux-atomic.c: Likewise.
      	* config/nds32/linux-atomic.c: Likewise.
      	* config/nios2/linux-atomic.c: Likewise.
      1100c057
    • Jeff Law's avatar
      [RFA] Fix csky and c6x build failures · 39a39d1f
      Jeff Law authored
      csky fails to build libgcc after the c23 changes because it has a typedef for
      bool.  AFAICT it's internal to the file, so removing the typedef isn't an ABI
      change.
      
      Similiarly for c6x which includes unwind-arm-common.inc.  I suspect most, if
      not all of the arm-v7 and older targets are failing to build right now.
      
      I've built and regression tested both csky-linux-gnu and c6x-elf with this
      change.  OK for the trunk?
      
      	PR target/117628
      libgcc/
      	* config/csky/linux-atomic.c (bool): Remove unnecessary typedef.
      	* unwind-arm-common.inc (bool): Similarly.
      39a39d1f
    • Gaius Mulley's avatar
      PR modula2/117371: Add check for zero step in for loop · e3764145
      Gaius Mulley authored
      
      This patch is a follow on from PR modula2/117371 which could include
      a check to enforce the ISO restriction on a zero for loop step.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/117371
      	* gm2-compiler/M2GenGCC.mod (PerformLastForIterator):
      	Add check for zero step value and issue an error message.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/117371
      	* gm2/iso/fail/forloopbyzero.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      e3764145
    • Eric Botcazou's avatar
      ada: Fix interaction of aspect Predicate and static case expressions · 70999668
      Eric Botcazou authored
      The semantics of the GNAT-specific Predicate aspect should be equivalent
      to those of the Static_Predicate aspect when the predicate expression is
      static, but that is not correctly implemented for static case expressions.
      
      gcc/ada/ChangeLog:
      
      	* exp_ch4.adb (Expand_N_Case_Expression): Remove the test on
      	enclosing predicate function for the return optimization.
      	Rewrite it in the general case to catch all nondynamic predicates.
      	(Expand_N_If_Expression): Remove the test on enclosing predicate
      	function for the return optimization.
      70999668
    • Bob Duff's avatar
      ada: Atomic_Synchronization is not a user-visible check · 4e23ce50
      Bob Duff authored
      Remove all user-level documentation of the check name
      "Atomic_Synchronization". The documentation was confusing because
      this check should never be used in source code, and because it
      raises the question of whether All_Checks applies to it (it does
      not).
      
      Change the name Atomic_Synchronization to be _Atomic_Synchronization
      (with a leading underscore) so that it cannot be used in source code.
      
      This "check" is not really a check at all; it is used only internally in
      the implementation of Disable/Enable_Atomic_Synchronization, because the
      placement and scope of these pragmas match pragma Suppress.
      
      gcc/ada/ChangeLog:
      
      	* doc/gnat_rm/implementation_defined_characteristics.rst:
      	Remove Atomic_Synchronization.
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
      	Likewise.
      	* doc/gnat_rm/implementation_defined_pragmas.rst: DRY.
      	Consolidate documentation of Disable/Enable_Atomic_Synchronization.
      	* checks.adb: Comment fix.
      	* exp_util.ads: Likewise.
      	* targparm.ads: Likewise.
      	* types.ads: Likewise.
      	* gnat1drv.adb: Likewise. DRY.
      	* sem_prag.adb (Process_Disable_Enable_Atomic_Sync):
      	Change name of Atomic_Synchronization to start with
      	underscore.
      	(Process_Suppress_Unsuppress): No need to check Comes_From_Source for
      	Atomic_Synchronization anymore; _Atomic_Synchronization can never
      	come from source. (Anyway, it shouldn't be ignored; it should be
      	an error.)
      	* snames.ads-tmpl (Atomic_Synchronization):
      	Change name to start with underscore.
      	* switch-c.adb (Scan_Front_End_Switches):
      	Minor cleanup: Use 'in'.
      	* gnat_rm.texi: Regenerate.
      	* gnat_ugn.texi: Regenerate.
      4e23ce50
    • Eric Botcazou's avatar
      ada: Fix small oversight in removal of N_Unchecked_Expression node · 70faad19
      Eric Botcazou authored
      In addition to Resolve_Indexed_Component, Eval_Indexed_Component can also
      set the Do_Range_Check flag on the expressions of an N_Indexed_Component
      node through the call on Check_Non_Static_Context, so this also needs to
      be blocked by the Kill_Range_Check flag.
      
      gcc/ada/ChangeLog:
      
      	* sem_eval.adb (Eval_Indexed_Component): Clear Do_Range_Check on
      	the expressions if Kill_Range_Check is set on the node.
      70faad19
    • Eric Botcazou's avatar
      ada: Fix another minor fallout of previous changes to aggregate expansion · b4fd15d8
      Eric Botcazou authored
      This is another glitch associated with Initialization_Statements.
      
      gcc/ada/ChangeLog:
      
      	* exp_util.adb (Remove_Init_Call): Rewrite a compound statement in
      	the Initialization_Statements of the variable as a null statement
      	instead of removing it.
      	* freeze.adb (Explode_Initialization_Compound_Statement): Small
      	comment tweaks.
      b4fd15d8
    • Eric Botcazou's avatar
      ada: Fix another minor fallout of previous changes to aggregate expansion · 1b24e30c
      Eric Botcazou authored
      The processing of static array aggregates in Exp_Aggr requires that their
      bounds be representable as Int(eger) values for practical purposes, and
      the previous changes have exposed another path where this is not checked.
      
      This introduces a UI_Are_In_Int_Range local predicate for convenience.
      
      gcc/ada/ChangeLog:
      
      	* exp_aggr.adb (UI_Are_In_Int_Range): New predicate.
      	(Aggr_Size_OK): Use it.
      	(Flatten): Likewise.
      	(Packed_Array_Aggregate_Handled): Likewise.
      	(Static_Array_Aggregate): Likewise.
      1b24e30c
    • Eric Botcazou's avatar
      ada: Fix minor fallout of previous changes to aggregate expansion · 3716d988
      Eric Botcazou authored
      The problem occurs for an anonymous array object declared with an aspect and
      when pragma {Initialize,Normalize}_Scalars is in effect: in this case, the
      synthesized aggregate is attached to the Initialization_Statements field by
      Convert_Aggr_In_Object_Decl, but Explode_Initialization_Compound_Statement
      puts it back at the point of declaration instead of the freeze point, thus
      voiding the effects of the mechanism.
      
      This was previously hidden because of a bypass in Freeze_Entity which drops
      the freeze node on the floor in this case, so the change fixes the issue and
      removes the bypass in the process.
      
      gcc/ada/ChangeLog:
      
      	* freeze.ads (Explode_Initialization_Compound_Statement): Adjust the
      	description.
      	* freeze.adb (Explode_Initialization_Compound_Statement): If the
      	entity has its freezing delayed, append the initialization actions
      	to its freeze actions.
      	(Freeze_Object_Declaration): Remove commented out code.
      	(Freeze_Entity): Remove bypass for object of anonymous array type.
      3716d988
    • Eric Botcazou's avatar
      ada: Small cleanup and refactoring in expansion of asynchronous select · 6a784959
      Eric Botcazou authored
      The exception handler that catches Abort_Signal does nothing nowadays.
      This refactors the code to use Build_Abort_Block more consistently and
      also makes it simpler by dropping the identifier on the abort block.
      
      No functional changes.
      
      gcc/ada/ChangeLog:
      
      	* exp_sel.ads (Build_Abort_Block): Remove second parameter and
      	rename the third.
      	(Build_Abort_Block_Handler): Fix description.
      	* exp_sel.adb (Build_Abort_Block): Remove second parameter, rename
      	the third and adjust accordingly.
      	* exp_ch9.adb (Expand_N_Asynchronous_Select): Fix the description
      	of the exception handler throughout.  Remove Abort_Block_Ent and
      	Hdle local variables.  Call Build_Abort_Block consistently to build
      	the abort block and adjust existing calls.
      6a784959
    • Steve Baird's avatar
      ada: Array aggregate with large static bounds causes compiler crash · 0019e8dc
      Steve Baird authored
      In some cases an array aggregate with statically known bounds and at least
      one bound outside of the range of a 32-bit signed integer causes
      a bugbox.
      
      gcc/ada/ChangeLog:
      
      	* exp_aggr.adb (Convert_To_Positional.Flatten): Avoid raising
      	Constraint_Error in UI_To_Int by testing UI_Is_In_Int_Range first.
      0019e8dc
    • Eric Botcazou's avatar
      ada: Cleanup in expansion of array aggregates in object declarations · b2320a12
      Eric Botcazou authored
      This mainly decouples the handling of the declaration case from that of the
      assignment case in Expand_Array_Aggregate, as well as moves the expansion
      in the case of an aggregate that can be processed by the back end to the
      Build_Array_Aggr_Code routine.
      
      gcc/ada/ChangeLog:
      
      	* exp_aggr.adb (Build_Array_Aggr_Code): Build the simple assignment
      	for the case of an aggregate that can be handled by the back end.
      	(Expand_Array_Aggregate): Adjust description of the processing.
      	Move handling of declaration case to STEP 4 and remove handling of
      	the case of an aggregate that can be processed by the back end.
      	(Late_Expansion): Likewise for the second part.
      	* exp_ch3.adb (Expand_N_Object_Declaration): Deal with a delayed
      	aggregate synthesized for the default initialization, if any.
      	* sem_eval.adb (Eval_Indexed_Component): Bail out for the name of
      	an assignment statement.
      b2320a12
    • Eric Botcazou's avatar
      ada: Further cleanup in expansion of array aggregates in allocators · 7617b832
      Eric Botcazou authored
      This mainly decouples the handling of the allocator case from that of the
      assignment case in Expand_Array_Aggregate and also makes Must_Slide a bit
      more forgiving.
      
      gcc/ada/ChangeLog:
      
      	* exp_aggr.adb (In_Place_Assign_OK): Remove handling of allocators
      	and call Must_Slide instead of implementing the check manually.
      	(Convert_To_Assignments): Adjust outdated comment.
      	(Expand_Array_Aggregate): Move handling of allocator case to STEP 3
      	and call Must_Slide directly for it.
      	(Must_Slide): Replace tests based on Is_OK_Static_Expression with
      	tests based on Compile_Time_Known_Value.
      7617b832
    • Eric Botcazou's avatar
      ada: Small cleanup in expansion of array aggregates in allocators · 856467a7
      Eric Botcazou authored
      Convert_Array_Aggr_In_Allocator does nothing that Late_Expansion cannot do,
      so this deletes the former and moves its support code for Storage_Model to
      the latter.  No functional changes.
      
      gcc/ada/ChangeLog:
      
      	* exp_aggr.adb (Convert_Array_Aggr_In_Allocator): Delete.
      	(Convert_Aggr_In_Allocator): Do not call above procedure.
      	(Late_Expansion): Deal with a target that is the dereference of a
      	prefix with a Storage_Model.  Remove an useless actual parameter
      	in the call to Build_Array_Aggr_Code.
      856467a7
    • Javier Miranda's avatar
      ada: Constraint error not raised in ACATS test c413007 · 7eafe8e9
      Javier Miranda authored
      Reverse the meaning of switch -gnatd_P; that is, enable by default
      the generating of a runtime check when the prefix of the call is
      an access-to-subprogram type with a null value.
      
      gcc/ada/ChangeLog:
      
      	* sem_res.adb (Resolve_Actuals): Add by default a null-exclusion
      	check on the prefix of the call when it is an access-type; it can
      	be disabled using -gnatd_P.
      	* debug.adb (gnatd_P): Update documentation.
      7eafe8e9
    • squirek's avatar
      ada: Crash on 'Access for Stream_Element_Array object · 1850d0db
      squirek authored
      This patch fixes a crash in the compiler when the actual for an anonymous
      access type formal is an 'Access of a Sream_Element_Array object during
      the calculation of said actual's accessibility level.
      
      gcc/ada/ChangeLog:
      
      	* accessibility.adb (Accessibility_Level): Handle the Input attribute
      	case
      1850d0db
    • Ronan Desplanques's avatar
      ada: Tweak test for predefined main unit · 28a69cb3
      Ronan Desplanques authored
      This change is part of an effort to reduce usage of
      Is_Predefined_Filename.
      
      gcc/ada/ChangeLog:
      
      	* frontend.adb (Frontend): tweak test for predefined main unit.
      28a69cb3
    • Tobias Burnus's avatar
      libgomp/plugin/plugin-gcn.c: async-queue init - fix function-return type and fail fatally · 884637b6
      Tobias Burnus authored
      libgomp/ChangeLog:
      
      	* plugin/plugin-gcn.c (GOMP_OFFLOAD_openacc_async_construct): In
      	case of an error, call GOMP_PLUGIN_fatal not ..._error; use NULL
      	not false in return.
      884637b6
    • Jennifer Schmitz's avatar
      testsuite: Move test pr117093.c into gcc.target/aarch64. · 944471ea
      Jennifer Schmitz authored
      
      The test file pr117093.c failed on platforms other than aarch64, because
      it uses arm_neon.h. We moved it into gcc.target/aarch64.
      
      The patch was bootstrapped and tested on aarch64-linux-gnu and
      x86_64-linux-gnu, no regression.
      Committed as obvious.
      
      Signed-off-by: default avatarJennifer Schmitz <jschmitz@nvidia.com>
      
      gcc/testsuite/
      	PR tree-optimization/117093
      	* gcc.dg/tree-ssa/pr117093.c: Move to gcc.target/aarch64.
      	* gcc.target/aarch64/pr117093.c: New test.
      944471ea
    • Robin Dapp's avatar
      RISC-V: Add VLS modes to strided loads. · 52a392b8
      Robin Dapp authored
      This patch adds VLS modes to the strided load expanders.
      
      gcc/ChangeLog:
      
      	* config/riscv/autovec.md: Add VLS modes.
      	* config/riscv/vector-iterators.md: Ditto.
      	* config/riscv/vector.md: Ditto.
      52a392b8
    • Robin Dapp's avatar
      RISC-V: Add else operand to masked loads [PR115336]. · b89273a0
      Robin Dapp authored
      This patch adds else operands to masked loads.  Currently the default
      else operand predicate just accepts "undefined" (i.e. SCRATCH) values.
      
      	PR middle-end/115336
      	PR middle-end/116059
      
      gcc/ChangeLog:
      
      	* config/riscv/autovec.md: Add else operand.
      	* config/riscv/predicates.md (maskload_else_operand): New
      	predicate.
      	* config/riscv/riscv-v.cc (get_else_operand): Remove static.
      	(expand_load_store): Use get_else_operand and adjust index.
      	(expand_gather_scatter): Ditto.
      	(expand_lanes_load_store): Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/rvv/autovec/pr115336.c: New test.
      	* gcc.target/riscv/rvv/autovec/pr116059.c: New test.
      b89273a0
    • Robin Dapp's avatar
      i386: Add zero maskload else operand. · ebf30772
      Robin Dapp authored
      gcc/ChangeLog:
      
      	* config/i386/sse.md (maskload<mode><sseintvecmodelower>):
      	Call maskload<mode>..._1.
      	(maskload<mode><sseintvecmodelower>_1): Rename.
      ebf30772
    • Robin Dapp's avatar
      gcn: Add else operand to masked loads. · 4a39addb
      Robin Dapp authored
      This patch adds an undefined else operand to the masked loads.
      
      gcc/ChangeLog:
      
      	* config/gcn/predicates.md (maskload_else_operand): New
      	predicate.
      	* config/gcn/gcn-valu.md: Use new predicate.
      4a39addb
    • Robin Dapp's avatar
      aarch64: Add masked-load else operands. · a166a6cc
      Robin Dapp authored
      This adds zero else operands to masked loads and their intrinsics.
      I needed to adjust more than initially thought because we rely on
      combine for several instructions and a change in a "base" pattern
      needs to propagate to all those.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64-sve-builtins-base.cc: Add else
      	handling.
      	* config/aarch64/aarch64-sve-builtins.cc (function_expander::use_contiguous_load_insn):
      	Ditto.
      	* config/aarch64/aarch64-sve-builtins.h: Add else operand to
      	contiguous load.
      	* config/aarch64/aarch64-sve.md (@aarch64_load<SVE_PRED_LOAD:pred_load>
      	_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>):
      	Split and add else operand.
      	(@aarch64_load_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>):
      	Ditto.
      	(*aarch64_load_<ANY_EXTEND:optab>_mov<SVE_HSDI:mode><SVE_PARTIAL_I:mode>):
      	Ditto.
      	* config/aarch64/aarch64-sve2.md: Ditto.
      	* config/aarch64/iterators.md: Remove unused iterators.
      	* config/aarch64/predicates.md (aarch64_maskload_else_operand):
      	Add zero else operand.
      a166a6cc
    • Robin Dapp's avatar
      vect: Add maskload else value support. · 634ae740
      Robin Dapp authored
      This patch adds an else operand to vectorized masked load calls.
      The current implementation adds else-value arguments to the respective
      target-querying functions that is used to supply the vectorizer with the
      proper else value.
      
      We query the target for its supported else operand and uses that for the
      maskload call.  If necessary, i.e. if the mode has padding bits and if
      the else operand is nonzero, a VEC_COND enforcing a zero else value is
      emitted.
      
      gcc/ChangeLog:
      
      	* optabs-query.cc (supports_vec_convert_optab_p): Return icode.
      	(get_supported_else_val): Return supported else value for
      	optab's operand at index.
      	(supports_vec_gather_load_p): Add else argument.
      	(supports_vec_scatter_store_p): Ditto.
      	* optabs-query.h (supports_vec_gather_load_p): Ditto.
      	(get_supported_else_val): Ditto.
      	* optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
      	(can_vec_mask_load_store_p): Ditto.
      	(target_supports_len_load_store_p): Ditto.
      	(get_len_load_store_mode): Ditto.
      	* optabs-tree.h (target_supports_mask_load_store_p): Ditto.
      	(can_vec_mask_load_store_p): Ditto.
      	* tree-vect-data-refs.cc (vect_lanes_optab_supported_p): Ditto.
      	(vect_gather_scatter_fn_p): Ditto.
      	(vect_check_gather_scatter): Ditto.
      	(vect_load_lanes_supported): Ditto.
      	* tree-vect-patterns.cc (vect_recog_gather_scatter_pattern):
      	Ditto.
      	* tree-vect-slp.cc (vect_get_operand_map): Adjust indices for
      	else operand.
      	(vect_slp_analyze_node_operations): Skip undefined else operand.
      	* tree-vect-stmts.cc (exist_non_indexing_operands_for_use_p):
      	Add else operand handling.
      	(vect_get_vec_defs_for_operand): Handle undefined else operand.
      	(check_load_store_for_partial_vectors): Add else argument.
      	(vect_truncate_gather_scatter_offset): Ditto.
      	(vect_use_strided_gather_scatters_p): Ditto.
      	(get_group_load_store_type): Ditto.
      	(get_load_store_type): Ditto.
      	(vect_get_mask_load_else): Ditto.
      	(vect_get_else_val_from_tree): Ditto.
      	(vect_build_one_gather_load_call): Add zero else operand.
      	(vectorizable_load): Use else operand.
      	* tree-vectorizer.h (vect_gather_scatter_fn_p): Add else
      	argument.
      	(vect_load_lanes_supported): Ditto.
      	(vect_get_mask_load_else): Ditto.
      	(vect_get_else_val_from_tree): Ditto.
      634ae740
    • Robin Dapp's avatar
      tree-ifcvt: Add zero maskload else value. · 6b6bd536
      Robin Dapp authored
      When predicating a load we implicitly assume that the else value is
      zero.  This matters in case the loaded value is padded (like e.g.
      a Bool) and we must ensure that the padding bytes are zero on targets
      that don't implicitly zero inactive elements.
      
      A former version of this patch still had this handling in ifcvt but
      the latest version defers it to the vectorizer.
      
      gcc/ChangeLog:
      
      	* tree-if-conv.cc (predicate_load_or_store): Add zero else
      	operand and comment.
      6b6bd536
    • Robin Dapp's avatar
      ifn: Add else-operand handling. · 8f68d9cb
      Robin Dapp authored
      This patch adds else-operand handling to the internal functions.
      
      gcc/ChangeLog:
      
      	* internal-fn.cc (add_mask_and_len_args): Rename...
      	(add_mask_else_and_len_args): ...to this and add else handling.
      	(expand_partial_load_optab_fn): Use adjusted function.
      	(expand_partial_store_optab_fn): Ditto.
      	(expand_scatter_store_optab_fn): Ditto.
      	(expand_gather_load_optab_fn): Ditto.
      	(internal_fn_len_index): Add else handling.
      	(internal_fn_else_index): Ditto.
      	(internal_fn_mask_index): Ditto.
      	(get_supported_else_vals): New function.
      	(supported_else_val_p): New function.
      	(internal_gather_scatter_fn_supported_p): Add else operand.
      	* internal-fn.h (internal_gather_scatter_fn_supported_p): Define
      	else constants.
      	(MASK_LOAD_ELSE_ZERO): Ditto.
      	(MASK_LOAD_ELSE_M1): Ditto.
      	(MASK_LOAD_ELSE_UNDEFINED): Ditto.
      	(get_supported_else_vals): Declare.
      	(supported_else_val_p): Ditto.
      8f68d9cb
    • Robin Dapp's avatar
      docs: Document maskload else operand and behavior. · 5214ddb4
      Robin Dapp authored
      This patch amends the documentation for masked loads (maskload,
      vec_mask_load_lanes, and mask_gather_load as well as their len
      counterparts) with an else operand.
      
      gcc/ChangeLog:
      
      	* doc/md.texi: Document masked load else operand.
      5214ddb4
    • Tobias Burnus's avatar
      libgomp/plugin/plugin-nvptx.c: Change false to NULL to fix C23 wrong-return-type error [PR117626] · e7e3d183
      Tobias Burnus authored
      libgomp/ChangeLog:
      
      	PR libgomp/117626
      	* plugin/plugin-nvptx.c (nvptx_open_device): Use 'CUDA_CALL_ERET'
      	with 'NULL' as error return instead of 'CUDA_CALL' that returns false.
      e7e3d183
    • Andrew Pinski's avatar
      match: Fix the `max<a,b>==0` pattern for pointers [PR117646] · 45a32771
      Andrew Pinski authored
      
      For pointers I forgot that BIT_IOR_EXPR is not valid so when
      I added the pattern to convert `max<a,b> != 0` (r15-5356), GCC
      would start to ICEing saying pointer types were not valid for
      BIT_IOR_EXPR.
      This fixes the problem by casting to the unsigned type of the
      inner type. There was another way of fixing this to handling it
      as `a == 0 & b == 0` but both match and reassoication (for pointers)
      will then convert it back into the form I am creating here so
      let's just use that form instead.
      
      Bootstrapped and tested on x86_64-linux-gnu.
      
      	PR tree-optimization/117646
      
      gcc/ChangeLog:
      
      	* match.pd (`max<a,b>==0`): Add casts to `unsigned type`.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/torture/minmaxneeqptr-1.c: New test.
      
      Signed-off-by: default avatarAndrew Pinski <quic_apinski@quicinc.com>
      45a32771
    • Jonathan Wakely's avatar
      libstdc++: Fix invalid casts in unordered container merge functions · dffc37de
      Jonathan Wakely authored
      
      François pointed out that static_cast<__node_ptr>(&_M_before_begin) is
      invalid, because _M_before_begin is only a node-base not a node.
      
      Refactor the new merge overloads to only cast when we know we have a
      valid node.
      
      He also pointed out some optimizations to allow reusing hash codes that
      might be cached in the node. The _M_src_hash_code function already has
      the right logic to decide when a cached hash code can be reused by a
      different _Hashtable object.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/hashtable.h (_Hashtable::_M_src_hash_code):
      	Improve comments.
      	(_Hashtable::_M_merge_unique(_Hashtable&)): Use pointer_traits
      	to get before-begin pointer. Only use static_cast on valid
      	nodes, not the before-begin pointer. Reuse a hash code cached in
      	the node when possible.
      	(_Hashtable::_M_merge_multi(_Hashtable&)): Likewise.
      
      Reviewed-by: default avatarFrançois Dumont <fdumont@gcc.gnu.org>
      dffc37de
    • Jason Merrill's avatar
      libcpp: add .c++-header-unit target · 7b8b96a3
      Jason Merrill authored
      The dependency output for header unit modules is based on the absolute
      pathname of the header file, but that's not something that a makefile can
      portably refer to.  This patch adds a .c++-header-unit target based on the
      header name relative to an element of the include path.
      
      libcpp/ChangeLog:
      
      	* internal.h (_cpp_get_file_dir): Declare.
      	* files.cc (_cpp_get_file_dir): New fn.
      	* mkdeps.cc (make_write): Use it.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/dep-4.H: New test.
      7b8b96a3
    • Andrew Pinski's avatar
      testsuite: Fix pr101145inf*.c testcases [PR117494] · 0dc389f2
      Andrew Pinski authored
      
      Instead of doing a dg-run with a specific target check for linux.
      Use signal as the effective-target since this requires the use
      of ALARM signal to do the testing.
      Also use check_vect in the main and renames main to main1 to make sure
      we don't use the registers.
      
      Tested on x86_64-linux-gnu.
      
      	PR testsuite/117494
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/vect/pr101145inf.c: Remove dg-do and replace
      	with dg-require-effective-target of signal.
      	* gcc.dg/vect/pr101145inf_1.c: Likewise.
      	* gcc.dg/vect/pr101145inf.inc: Rename main to main1
      	and mark as noinline.
      	Include tree-vect.h. Have main call check_vect and main1.
      
      Signed-off-by: default avatarAndrew Pinski <quic_apinski@quicinc.com>
      0dc389f2
    • Gerald Pfeifer's avatar
      libstdc++: Update reference to Angelika Langer's article · 83e86397
      Gerald Pfeifer authored
      libstdc++-v3:
      	* doc/xml/manual/allocator.xml: Update reference to Angelika
      	Langer's article.
      	* doc/html/manual/memory.html: Regenerate.
      83e86397
    • Jeff Law's avatar
      Improve ext-dce's ability to eliminate more extensions · beec2912
      Jeff Law authored
      I was looking at a regression in ext-dce's behavior just before Cauldron.
      Essentially a bugfix in ext-dce ended up causing us to fail to eliminate some
      useless extensions.
      
      When we have a SUBREG object with SUBREG_PROMOTED_VAR* flags set, we generally
      have to be more conservative in how we process bit group liveness, making bits
      live that wouldn't obviously be live otherwise.
      
      That's not always necessary though. For example, if we're storing a promoted
      subreg into memory, we may not care about those extra live bits on this
      instance of the subreg object (remember subregs are not shared!).  Essentially
      if the mode of the memory reference is not wider than the mode of the inner
      REG, then we can clear the promoted state which in turn may allow more
      extension elimination.
      
      So at the start of ext-dce we do a simple pass over the IL and remove promoted
      subreg state when it's obviously safe to do so (memory stores when the modes
      allow it).  That prevents extra bits from being live and ultimately allows us
      to remove more useless extensions.
      
      The testcase is in theory generic, but many targets won't have an opportunity
      to optimize this case.  So rather then build out a large inclusion/exclusion
      list, I've just made the test risc-v specific.
      
      Bootstrapped and regression tested on aarch64, riscv64, s390x, etc in my tester.
      
      gcc/
      	* ext-dce.cc (maybe_clear_subreg_promoted_p): New function.
      	(ext_dce_execute): Call it.
      
      gcc/testsuite
      	* gcc.target/riscv/ext-dce-1.c: New test.
      beec2912
    • Maciej W. Rozycki's avatar
      Alpha: Remove leftover `;;' for "unaligned_store<mode>" · 4a8eb5c6
      Maciej W. Rozycki authored
      Remove stray `;;' from the middle of the introductory comment for the
      "unaligned_store<mode>" expander, clearly a leftover from a previous
      edition.
      
      	gcc/
      	* config/alpha/alpha.md (unaligned_store<mode>): Remove stray
      	`;;'.
      4a8eb5c6
    • John David Anglin's avatar
      hppa: Update install documentation · 29c4f663
      John David Anglin authored
      2024-11-17  John David Anglin  <danglin@gcc.gnu.org>
      
      gcc/ChangeLog:
      
      	PR target/69374
      	* doc/install.texi (Specific) <hppa*-hp-hpux11>: Update anchor
      	and heading to reflect removal of 32-bit hppa support on HP-UX.
      	Trim 32-bit related text.
      29c4f663
    • GCC Administrator's avatar
      Daily bump. · 24da8634
      GCC Administrator authored
      24da8634
  2. Nov 17, 2024
    • Jason Merrill's avatar
      c++: regenerate opt urls · db348cae
      Jason Merrill authored
      This should have been part of r15-5367.  One day I'll remember to do this
      before buildbot sends me hate mail.
      
      gcc/c-family/ChangeLog:
      
      	* c.opt.urls: Regenerate.
      db348cae
    • John David Anglin's avatar
      hppa: Remove typedef for bool type · 8f50a079
      John David Anglin authored
      In C23, bool is now a keyword.  So, doing a typedef for it is invalid.
      
      2024-11-17  John David Anglin  <danglin@gcc.gnu.org>
      
      libgcc/ChangeLog:
      
      	PR target/117627
      	* config/pa/linux-atomic.c: Remove typedef for bool type.
      8f50a079
Loading