]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
113 min agofortran: [PR78718] ICE in gfc_get_symbol_decl, at fortran/trans-decl.c master trunk
Jerry DeLisle [Sat, 11 Jul 2026 04:47:59 +0000 (21:47 -0700)] 
fortran: [PR78718] ICE in gfc_get_symbol_decl, at fortran/trans-decl.c

PR fortran/78718

gcc/fortran/ChangeLog:

* resolve.cc (was_declared): Recognize the RESULT attribute so a
function's result variable is not mistaken for a host-associated
symbol of the same name.

gcc/testsuite/ChangeLog:

* gfortran.dg/func_result_8.f90: New test.

2 hours agolibstdc++: std::variant test should be C++17 and up
Jonathan Wakely [Wed, 22 Jul 2026 18:22:44 +0000 (19:22 +0100)] 
libstdc++: std::variant test should be C++17 and up

libstdc++-v3/ChangeLog:

* testsuite/20_util/variant/lwg3990.cc: Change et to c++17.

2 hours agolibgomp: Add by-device capabilities for OpenMP 'omp requires' handling: Fix OpenMP...
Thomas Schwinge [Wed, 22 Jul 2026 18:10:21 +0000 (20:10 +0200)] 
libgomp: Add by-device capabilities for OpenMP 'omp requires' handling: Fix OpenMP reverse offload capability checking

I noticed that as of commit 7cb252f60c1f600066300ede2781a2c9e3808adb
"libgomp: Add by-device capabilities for OpenMP 'omp requires' handling",
'libgomp.fortran/reverse-offload-5.f90' no longer XFAILs NVIDIA GPU offloading
execution, no matter whether non-USM or USM single-GPU system.  That was
suspicious, given that this commit shouldn't cause any such difference in
behavior, per my understanding.  Well, turns out, this commit indeed didn't
magically fix the failure, but it's just another case of non-existing static
type checking of flag values...

libgomp/
* target.c (gomp_target_init): Fix OpenMP reverse offload
capability checking.

2 hours agocobol: Accept ASSIGN TO DEVICE.
James K. Lowden [Wed, 22 Jul 2026 17:43:46 +0000 (13:43 -0400)] 
cobol: Accept ASSIGN TO DEVICE.

For SELECT fd-name ASSIGN TO dev, "dev" may name either a runtime
environment variable (as previously) or, as now, an
implementation-defined device.  New warnings govern dialect
variations.  Fixes RT 3617.

gcc/cobol/ChangeLog:

* cbldiag.h (enum cbl_diag_id_t): New warnings.
* cobol1.cc (cobol_langhook_handle_option): Process warnings.
* gcobol.1: Document warnings and devices.
* lang-specs.h: Accept warngings.
* lang.opt: Define warnings.
* messages.cc: Associate warnings with dialects.
* parse.y: Parse new syntax.

3 hours agofortran: [PR53296] Fix character array-ctor function called twice
Jerry DeLisle [Tue, 21 Jul 2026 16:15:50 +0000 (09:15 -0700)] 
fortran: [PR53296] Fix character array-ctor function called twice

Avoid the redundant generated call to the pre chain when
no_function_call is set.

Also fix a related stack-buffer-overflow: gfc_conv_array_parameter
wrote over the array constructor's. The specified length was to short.
Use the explicit character type-spec length instead.

PR fortran/53296

gcc/fortran/ChangeLog:

* trans-expr.cc (gfc_conv_procedure_call): Skip the redundant
function call added to the pre chain when no_function_call is
set and the character result length was already determined
without running the callee.
* trans-array.cc (gfc_conv_array_parameter): Convert an array
constructor's explicit character type-spec length directly
instead of using the first elements length.

gcc/testsuite/ChangeLog:

* gfortran.dg/array_constructor_59.f90: New test.

4 hours agoUpdate my name in the MAINTAINERS file
Andrea Pinski [Tue, 21 Jul 2026 18:31:38 +0000 (11:31 -0700)] 
Update my name in the MAINTAINERS file

As slowing changing my name in places; it is time to update
the MAINTAINERS file too.

ChangeLog:

* MAINTAINERS.yml: Update my name.
* MAINTAINERS: Regenerate.

Signed-off-by: Andrea Pinski <andrew.pinski@oss.qualcomm.com>
4 hours agoFix maintainer_utils.py for older jsonscheme [PR126162]
Andrea Pinski [Tue, 21 Jul 2026 18:25:34 +0000 (11:25 -0700)] 
Fix maintainer_utils.py for older jsonscheme [PR126162]

Some semi-older distros don't have a new enough jsonscheme
installed. So this moves the scheme to the older json scheme
rather than using the 2020 one.

PR testsuite/126162
contrib/ChangeLog:

* maintainer_utils.py: Move to the older scheme which
is valid for MAINTAINERS.yml.

Signed-off-by: Andrea Pinski <andrew.pinski@oss.qualcomm.com>
Co-authored-by: Arsen Arsenović <aarsenovic@baylibre.com>
6 hours agors6000: Add DMF-specific XO move pattern
Vijay Shankar [Mon, 20 Jul 2026 08:04:54 +0000 (03:04 -0500)] 
rs6000: Add DMF-specific XO move pattern

Split the movxo pattern into DMF and non-DMF variants.

Use DMF move instructions (dmxxinstdmr512, dmmr, and dmxxextfdmr512)
for accumulator/DMR moves while retaining the existing split for
non-DMR operands.

2026-07-15  Vijay Shankar  <vijay@linux.ibm.com>

gcc/ChangeLog:
* config/rs6000/mma.md (*movxo): renamed to movxo_nodmf
(*movxo_nodmf): updated contraint to use wD and add !TARGET_DMF
(*movxo_dmf): New pattern to handle dmf insert/extract from vsx

7 hours agoSimplify vect_schedule_slp_node
Richard Biener [Wed, 22 Jul 2026 12:22:56 +0000 (14:22 +0200)] 
Simplify vect_schedule_slp_node

The following simplifies SLP scheduling insert iteration computation.

* tree-vect-slp.cc (vect_schedule_slp_node): Simplify scheduling.

7 hours agoFix SLP scheduling in-region check
Richard Biener [Wed, 22 Jul 2026 10:58:47 +0000 (12:58 +0200)] 
Fix SLP scheduling in-region check

This corrects assessing whether a stmt is inside the vector region,
checking random stmt UIDs against -1 does not work for loop vectorization.

* tree-vect-slp.cc (vect_schedule_slp_node): Correct in-region
stmt check.

7 hours agors6000: Add TDOmode reload patterns for DMR registers
Surya Kumari Jangala [Wed, 22 Jul 2026 12:56:51 +0000 (07:56 -0500)] 
rs6000: Add TDOmode reload patterns for DMR registers

Add define_insn_and_split patterns for reloading TDOmode values between
Dense Math Registers (DMRs) and memory when TARGET_DMF is enabled.

2026-07-15  Surya Kumari Jangala  <jskumari@linux.ibm.com>
    Peter Bergner  <bergner@linux.ibm.com>

gcc:
* config/rs6000/mma.md (UNSPEC_DMR_RELOAD_FROM_MEMORY): New unspec.
(UNSPEC_DMR_RELOAD_TO_MEMORY): Likewise.
(reload_tdo_load): New define_insn_and_split.
(reload_tdo_store): Likewise.
* config/rs6000/rs6000.cc (rs6000_init_hard_regno_mode_ok): Set
reload_load and reload_store for TDOmode when TARGET_DMF.

9 hours agoAVR: Use more .branch_plus in lib1funcs.S
Georg-Johann Lay [Wed, 22 Jul 2026 11:13:58 +0000 (13:13 +0200)] 
AVR: Use more .branch_plus in lib1funcs.S

This patch uses .branch_plus in two more cases,
and it adjusts some comments.

libgcc/
* config/avr/lib1funcs.S (__mulqihi3): Use .branch_plus.
(__mulsidi3): Same.

9 hours agolibstdc++: Update Solaris baselines for GCC 17.0
Rainer Orth [Wed, 22 Jul 2026 11:17:13 +0000 (13:17 +0200)] 
libstdc++: Update Solaris baselines for GCC 17.0

This patch updates the Solaris baselines after the introduction of the
GLIBCXX_3.4.37 version.

Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (32 and 64-bit
each).

2026-07-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

libstdc++-v3:
* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
Likewise.
* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
Likewise.

9 hours agoAVR: Tweak lib1funcs-fixed.S::__mulQ64_work once more.
Georg-Johann Lay [Wed, 22 Jul 2026 10:50:14 +0000 (12:50 +0200)] 
AVR: Tweak lib1funcs-fixed.S::__mulQ64_work once more.

libgcc/
* config/avr/lib1funcs-fixed.S (__mulQ64_work): Shave
off one more instruction.

10 hours agoAVR: Tweak lib1funcs-fixed.S::__mulQ64_work.
Georg-Johann Lay [Wed, 22 Jul 2026 10:25:30 +0000 (12:25 +0200)] 
AVR: Tweak lib1funcs-fixed.S::__mulQ64_work.

This patch
- Tweaks the signed overflow handling in __mulQ64_work.
- Rename misnomed fx24-mul.c to fx64-mul-1.c.
- Adds more test cases in fx64-mul-2.c.

libgcc/
* config/avr/lib1funcs-fixed.S (__mulQ64_work): Tweak
overflow handling.  Use __negsi2 (non-saturating negation)
to negate.
gcc/testsuite/
* gcc.target/avr/fx24-mul.c: Renamed to...
* gcc.target/avr/fx64-mul-1.c: ...this.
* gcc.target/avr/fx64-mul-2.c: New test.
* gcc.target/avr/fx64-mul.h: New file.

10 hours agotestsuite: require cortex-a53 in reg_equal_test.c test
Torbjörn SVENSSON [Mon, 20 Jul 2026 18:36:45 +0000 (20:36 +0200)] 
testsuite: require cortex-a53 in reg_equal_test.c test

The original purpose of the test is to verify that, when the backend
emits a mov-pair sequence, the sequence carries a REG_EQUAL note for the
final constant value.  Make that precondition explicit instead of
depending on target-specific tuning behavior, by forcing the test to
a CPU with the required properties.

gcc/testsuite/ChangeLog:

* gcc.target/arm/reg_equal_test.c: Add require effective target
cortex-a53 for test.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
10 hours agolibstdc++: Update Linux baselines for GCC 17.0
Jakub Jelinek [Wed, 22 Jul 2026 09:56:48 +0000 (11:56 +0200)] 
libstdc++: Update Linux baselines for GCC 17.0

The following patch applies the powerpc64le-linux-gnu/baseline_symbols.txt
and x86_64-linux-gnu/baseline_symbols.txt r17-2579 changes to all
other linux arches which have recently updated baseline_symbols.txt
(i.e. those which have GLIBCXX_3.4.35 symbol version in it).
Those 3 symbols are architecture independent, they don't have any
size_t etc. argument that depends on the architecture, j (unsigned int) for
the last one is unsigned int on all arches.
On most the patch applied cleanly, on some (powerpc*/s390x*) I had to
manually resolve fuzz, as
FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8
there wasn't followed by
FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
but some @@GLIBCXX_LDBL_3.4 symbols (which are _ZNKSt17* though, so the
two new comes alphabetically sorted before those).

2026-07-22  Jakub Jelinek  <jakub@redhat.com>

* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Regenerate
from 16 branch.
* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
Likewise.
* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Likewise.
* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Likewise.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
11 hours agolibgomp: Add by-device capabilities for OpenMP 'omp requires' handling
Tobias Burnus [Wed, 22 Jul 2026 08:40:36 +0000 (10:40 +0200)] 
libgomp: Add by-device capabilities for OpenMP 'omp requires' handling

Before the capabilities of a device were statically set to a generic
by-device-type value. This has been modified to additionally set them
to a value for a specific device.

On the plugin side, this permits to set the unified-shared memory
capability for only a subset of devices and to mark devices that are
integrated GPUs (APU) and support USM, which in turn permitted to move
the handling of OpenMP requirements from the plugin back to target.c
and permits in future to automatically enable unified-shared memory
for integrated GPUs/APUs.

The check for whether host memory can be accessed is for Nvidia GPUs
whether pageableMemoryAccess is supported (unchanged) and for AMD GPUs
whether SVM_ACCESSIBLE_BY_DEFAULT is supported (unchanged, global
property) and, if not, now also whether the device is an APU and
either XNACK is enabled or not supported by the hardware. For systems
with a single GPU, the result should be identical.

Note: The resulting capability is currently only used with
  omp requires unified_shared_memory / self_maps
such that this flag is only set if the user code has this requirement
and all devices not supporting the host-memory access are filtered out.

Co-authored-by: Andrew Stubbs <ams@baylibre.com>
Co-authored-by: supers1ngular <supers1ngular@baylibre.com>
include/ChangeLog:

* hsa.h (hsa_system_info_t): Add HSA_AMD_SYSTEM_INFO_XNACK_ENABLED.

libgomp/ChangeLog:

* libgomp-plugin.h (GOMP_OFFLOAD_CAP_APU_SHARED_MEM,
GOMP_OFFLOAD_CAP_UNIFIED_ADDR, GOMP_OFFLOAD_CAP_REV_OFFLOAD): Add.
(GOMP_OFFLOAD_get_dev_caps): New prototype.
(GOMP_OFFLOAD_get_num_devices): Remove requirement argument.
* libgomp.h (struct gomp_device_descr): Add get_dev_caps_func.
* libgomp.texi (nvptx, AMD Radeon): Update for by-device
USM support.
* oacc-host.c (host_get_num_devices,
host_openacc_get_property): Update call.
* oacc-init.c (resolve_device, acc_init_1, acc_shutdown_1,
goacc_attach_host_thread_to_device, acc_get_num_devices,
acc_set_device_num, get_property_any): Likewise.
* plugin/plugin-gcn.c (is_integrated_apu): Remove.
(GOMP_OFFLOAD_get_caps): Mark unified address and
reverse offload as supported.
(GOMP_OFFLOAD_get_dev_caps): New.
(GOMP_OFFLOAD_get_num_devices): Remove requirements arg.
* plugin/plugin-nvptx.c (using_usm): Init with -1.
(GOMP_OFFLOAD_get_caps): Mark unified address and
reverse offload as supported.
(GOMP_OFFLOAD_get_dev_caps): New.
(GOMP_OFFLOAD_get_num_devices): Remove requirements arg.
(GOMP_OFFLOAD_is_accessible_ptr): Check for using_usm > 0.
* target.c (gomp_load_plugin_for_device): Load get_dev_caps.
(gomp_target_init): Change to by-device capabilities, skip
only those devices not devices types that do not support a
capability.

12 hours agodoc/invoke.texi: -fopenmp-ompt - add additional construct
Tobias Burnus [Wed, 22 Jul 2026 08:20:26 +0000 (10:20 +0200)] 
doc/invoke.texi: -fopenmp-ompt - add additional construct

Since commit r17-2560-gf657c8992ffc16, -fopenmp-ompt also affects the
OpenMP 'scope' construct; document this and sort directives alphabetically.

gcc/ChangeLog:

* doc/invoke.texi (-fopenmp-ompt): Add 'scope' construct.
(-fopenmp-ompt-detailed): Fix typo.

12 hours agors6000: Add TDOmode move patterns
Jeevitha [Wed, 15 Jul 2026 10:30:06 +0000 (05:30 -0500)] 
rs6000: Add TDOmode move patterns

Add move support for the new TDOmode opaque type used to represent
1024-bit Dense Math Registers that may be supported by future Power
processors.

Implement the movtdo pattern to support moves between memory, VSX
registers, and Dense Math Registers. Memory moves and VSX
register-to-register moves are handled by the generic multi-register
splitter. Dense Math Register-to-Register moves use dmmr, while moves
between VSX and Dense Math Registers are expanded using dm_insert1024
and dm_extract512.

2026-07-14  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>

gcc/
* config/rs6000/mma.md (UNSPEC_DMF_EXTRACT512): New unspec.
(dm_extract512): New insn.
(movtdo): New expander.
(*movtdo): New insn_and_split to support TDOmode moves between
memory, VSX registers, and Dense Math Registers.
* config/rs6000/rs6000.cc (rs6000_emit_move): Diagnose constant
assignments to TDOmode objects.
(rs6000_split_multireg_move): Handle TDOmode when splitting
multi-register moves.

12 hours agors6000: Build DMF accumulators using DMR insert operations
Kishan Parmar [Wed, 22 Jul 2026 08:08:12 +0000 (13:38 +0530)] 
rs6000: Build DMF accumulators using DMR insert operations

A future PowerPC processor may provide the Dense Math Facility (DMF),
where accumulators are backed by dedicated Dense Math Registers (DMRs).
Update accumulator assembly to build accumulators in DMRs using the new
DMR insert operations rather than xxmtacc/xxmfacc.

Add DMR register predicate support, enable the required OOmode VSX pair
patterns under TARGET_DMF, use accumulator operands for MMA accumulator
assembly and disassembly, and avoid emitting xxmtacc/xxmfacc during
internal accumulator moves and GIMPLE folding when DMF is enabled.
Add DMF instruction type and ISA attributes for instruction scheduling
and enablement.

2026-07-22  Kishan Parmar  <kishan@linux.ibm.com>

gcc/

* config/rs6000/mma.md (UNSPEC_DMF_INSERT512): New unspec.
(UNSPEC_DMF_INSERT1024): Likewise.
(movoo): Enable for TARGET_DMF.
(*movoo): Likewise.
(vsx_assemble_pair): Likewise.
(*vsx_assemble_pair): Likewise.
(vsx_disassemble_pair): Likewise.
(*vsx_disassemble_pair): Likewise.
(dm_insert512): New insn.
(dm_insert1024): Likewise.
(mma_assemble_acc): Use accumulator_operand.
Build accumulators via DMR insert operations when TARGET_DMF.
(*mma_assemble_acc): Use accumulator_operand.
(mma_<acc>): New define_expand treating xxmtacc/xxmfacc as no-ops
for TARGET_DMF.
(*mma_<acc>): Restrict to !TARGET_DMF and use accumulator_operand.
(mma_disassemble_acc): Use accumulator_operand.
* config/rs6000/predicates.md (dmr_register_operand): New predicate.
(gpc_reg_operand): Accept DMR registers.
* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin): Do
not emit xxmfacc for DISASSEMBLE_ACC when TARGET_DMF.
* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Allow
OOmode in VSX register pairs for TARGET_DMF.
(rs6000_split_multireg_move): Avoid emitting xxmtacc/xxmfacc when
TARGET_DMF.
* config/rs6000/rs6000.md (type): Add dmf type.
(isa): Add mma and dmf ISA attributes.
(enabled): Add mma and dmf enable conditions.

gcc/testsuite/

* gcc.target/powerpc/dmf-xxacc.c: New test.
* gcc.target/powerpc/nodmf-xxacc.c: New test.

12 hours agos390x: Implement vec_cbranch_{all,any}
Juergen Christ [Tue, 10 Feb 2026 13:13:03 +0000 (14:13 +0100)] 
s390x: Implement vec_cbranch_{all,any}

This enables early-exit vectorization on s390x.

Adjust the test suite since s390x does not support variable length
vectors and only supports basic vector load schemes.

gcc/ChangeLog:

* config/s390/s390-protos.h (s390_expand_vec_compare_gen_cc):
New function.
* config/s390/s390.cc (s390_expand_vec_compare_cc): Extract
part of this function into a ...
(s390_expand_vec_compare_gen_cc): ... new function.
* config/s390/vector.md (vec_cbranch_any<mode>): Implement.
(vec_cbranch_all<mode>): Implement.

gcc/testsuite/ChangeLog:

* gcc.dg/tree-ssa/gen-vect-11.c: Adjust.
* gcc.dg/tree-ssa/gen-vect-11a.c: Adjust.
* gcc.dg/vect/vect-early-break_52.c: Adjust.
* gcc.dg/vect/vect-early-break_53.c: Adjust.
* gcc.dg/vect/vect-early-break_64.c: Adjust.
* gcc.dg/vect/vect-uncounted_2.c: Adjust.
* lib/target-supports.exp: Add s390x to early-break
vectorization

Signed-off-by: Juergen Christ <jchrist@linux.ibm.com>
12 hours agors6000: Add %wD constraint and predicate for accumulators
Avinash Jayakar [Thu, 2 Jul 2026 06:45:09 +0000 (12:15 +0530)] 
rs6000: Add %wD constraint and predicate for accumulators

The future processor may introduce new set of registers for
accumulators. This patch adds a constraint and predicate for the
accumulator registers which can be used by the dense math and mma
patterns.

2026-07-16  Avinash Jayakar  <avinashd@linux.ibm.com>

gcc/ChangeLog:
* config/rs6000/constraints.md
(rs6000_constraints[RS6000_CONSTRAINT_wD]): New wD constraint.
* config/rs6000/predicates.md (accumulator_operand): New predicate.
* config/rs6000/rs6000.cc (rs6000_debug_reg_global): Support wD
register class.
(rs6000_init_hard_regno_mode_ok): Map wD to FLOAT_REGS.
* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wD constraint.
* doc/md.texi: Document the new constraint.

16 hours agors6000: Add support for Dense Math Facility (DMF) registers
Surya Kumari Jangala [Mon, 13 Jul 2026 08:41:21 +0000 (03:41 -0500)] 
rs6000: Add support for Dense Math Facility (DMF) registers

The Dense Math Facility, which may be present in a future processor,
extends the Power architecture's computational capabilities by providing
eight dedicated registers (dmr0-dmr7) that can efficiently handle large
matrix operations. These registers will also be used in cryptographic
operations.
There are no operations to load/store Dense Math registers from/to
memory. For loading from memory, the 1024 bit value is first loaded into
8 VSX registers which are then copied into a DMR register. Similarly,
to store the contents of a DMR register into memory, the the contents
of the DMR are copied to 8 VSX registers which are then loaded into
memory.

Key Features:

 1. Register Infrastructure:
    - Adds 8 new DMR registers (dmr0-dmr7), numbered 111-118
    - Each register is 1024 bits (128 bytes) in size
    - Registers are call-used (caller-saved) following ABI conventions
    - Increases total pseudo registers from 111 to 119

 2. Data Type Support:
    - TDOmode: New 1024-bit mode specifically for DMR operations
    - XOmode: Extended to support both MMA accumulators (in FPRs) and
      DMR registers, providing flexibility in register allocation
    - Both modes support DMR registers when TARGET_DMF is enabled
    - TDOmode and XOmode excluded from register tying to prevent
      incorrect cross-class allocation

 3. Register Allocation:
    - Integrated DMR_REGS into the register class hierarchy
    - Added to register pressure classes for optimal allocation
    - Implements proper register allocation ordering
    - DMR registers can be allocated for XOmode and TDOmode values

 4. Addressing and Memory Operations:
    - Supports offset addressing mode for TDOmode values
    - Implements secondary reload mechanisms for DMR ↔ VSX transfers
    - New rs6000_dmr_register_move_cost helper computes move costs
      between a DMR register and any register class via VSX:
      XOmode costs 2, TDOmode costs 4, other modes scale by nregs
    - Ensures proper alignment requirements (vector alignment)
    - rs6000_register_move_cost and rs6000_memory_move_cost extended
      to handle DMR_REGS as source or destination

 5. Register Moves and Transfers:
    - Enables simple moves between DMR and VSX registers

 6. Debugging and Toolchain Support:
    - Assigns debugger register numbers 112-119 for DMR registers

2027-07-13  Surya Kumari jangala  <jskumari@linux.ibm.com>

gcc:
* config/rs6000/rs6000.cc (enum rs6000_reg_type): Add DMR_REG_TYPE.
(enum rs6000_reload_reg_type): Add RELOAD_REG_DMR.
(LAST_RELOAD_REG_CLASS): Update to RELOAD_REG_DMR.
(reload_reg_map): Add DMR entry.
(rs6000_reg_names): Add DMR register names.
(alt_reg_names): Add alternate DMR register names.
(rs6000_hard_regno_nregs_internal): Handle DMR registers.
(rs6000_hard_regno_mode_ok_uncached): Add TDOmode and XOmode support for
DMR registers.
(rs6000_debug_reg_global): Add TDOmode to debug modes and print DMR
register range.
(rs6000_setup_reg_addr_masks): Handle RELOAD_REG_DMR.
Allow offset loads for TDOmode values.
(rs6000_init_hard_regno_mode_ok): Add DMR_REGS to reg_class_to_reg_type
mapping.
Update precalculation of CLASS_MAX_NREGS.
(rs6000_secondary_reload_memory): Handle DMR_REGS class.
(rs6000_secondary_reload_simple_move): Add DMR to VSX moves.
(rs6000_preferred_reload_class): Handle DMR_REGS.
(rs6000_modes_tieable_p): Exclude TDOmode from register tying.
(reg_offset_addressing_ok_p): Allow XOmode with TARGET_DMF.
Add TDOmode support with TARGET_DMF.
(rs6000_secondary_reload_class): Handle DMR_REGS reload routing.
(rs6000_dmr_register_move_cost): New helper.
(rs6000_register_move_cost): Handle DMR_REGS as source or destination.
(rs6000_memory_move_cost): Add DMR_REGS case routing cost through VSX.
(rs6000_compute_pressure_classes): Add DMR_REGS when TARGET_DMF.
(rs6000_debugger_regno): Add DMR register numbering.
* config/rs6000/rs6000.h (UNITS_PER_DMR_WORD): Define as 128.
(FIRST_PSEUDO_REGISTER): Increase from 111 to 119.
(FIXED_REGISTERS): Add 8 DMR registers as non-fixed.
(CALL_USED_REGISTERS): Mark all DMR registers as call-used.
(REG_ALLOC_ORDER): Add DMR registers to allocation order.
(DMR_REGNO_P): New macro.
(VECTOR_ALIGNMENT_P): Add TDOmode.
(enum reg_class): Add DMR_REGS entry.
(REG_CLASS_CONTENTS): Add DMR_REGS bitmask.
(REGISTER_NAMES): Add dmr0-dmr7 register names.
(ADDITIONAL_REGISTER_NAMES): Add dmr0-dmr7 mappings.
* config/rs6000/rs6000.md (FIRST_DMR_REGNO): Define as 111.
(LAST_DMR_REGNO): Define as 118.

20 hours agoDaily bump.
GCC Administrator [Wed, 22 Jul 2026 00:16:37 +0000 (00:16 +0000)] 
Daily bump.

24 hours agotree-optimization: Fold constant conditional selects [PR124663]
Torbjörn SVENSSON [Sat, 18 Jul 2026 09:00:32 +0000 (11:00 +0200)] 
tree-optimization: Fold constant conditional selects [PR124663]

Fold `(x == CST) ? x : CST` and `(x != CST) ? CST : x` to `CST` for
integral scalar and vector types. This catches cases where earlier
folding has converted bitwise mask expressions into conditional selects,
including ARM MVE predicate-to-vector mask forms.

PR tree-optimization/124663

gcc/ChangeLog:

* match.pd: Fold constant conditional selects.

gcc/testsuite/ChangeLog:

* g++.dg/tree-ssa/pr124663.C: New test.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
24 hours agocobol: Enable Bison parser stack growth.
James K. Lowden [Tue, 21 Jul 2026 19:41:21 +0000 (15:41 -0400)] 
cobol: Enable Bison parser stack growth.

Work around a Bison error when compiling C output with a C++ compiler.
Although the Bison manual states that a user-defined location type
must be trivially copyable, it nevertheless normally does not emit
stack-growth logic if __cplusplus is defined to the preprocessor.
Consequently a large program that drives the stack above 200 elements
aborts with a "memory exhausted" error.

To enable stack growth, define the undocumented YYLTYPE_IS_TRIVIAL
variable.  Use a static assert to ensure the type meets the
requirement.

A patch was submitted to the Bison project that hopefully will make
this workaround unnecessary sometime mid-century.

gcc/cobol/ChangeLog:

* cbldiag.h (struct cbl_loc_t): Assert is_trivially_copyable.
* parse.y: Define YYLTYPE_IS_TRIVIAL.

24 hours agoAArch64: use ranger to fold WHILE_ULT to ptrue
Tamar Christina [Tue, 21 Jul 2026 19:49:19 +0000 (20:49 +0100)] 
AArch64: use ranger to fold WHILE_ULT to ptrue

Consider the following simple loop:

void foo (int *x)
{
  for (int i = 0; i < 1000; i++)
    x[i] *= 2;
}

compiled at -Ofast -march=armv8-a+sve generates

foo:
        mov     w1, 0
        cntw    x3
        mov     w2, 1000
        whilelo p7.s, wzr, w2
.L2:
        ld1w    z31.s, p7/z, [x0, x1, lsl 2]
        add     z31.s, z31.s, z31.s
        st1w    z31.s, p7, [x0, x1, lsl 2]
        add     x1, x1, x3
        whilelo p7.s, w1, w2
        b.any   .L2
        ret

Which is nice, but the whilelo in the pre-header is unneeded.  Due to the
architecturally defined minimum and maximum vector lengths[1] we know that at
any vector length the predicate is an all lanes active predicate, i.e. p7 is
always ptrue.

We can use gimple-isel these days while we still have range information on
the operands of .WHILE_ULTs to do this folding.

As such this patch folds whenever possible WHILE_ULTs into ptrue which are
cheaper to execute and so lowers our costs for entering the loops. i.e. the
above generates:

foo:
        mov     w1, 0
        cntw    x3
        mov     w2, 1000
        ptrue   p7.b, all
.L2:
        ld1w    z31.s, p7/z, [x0, x1, lsl 2]
        add     z31.s, z31.s, z31.s
        st1w    z31.s, p7, [x0, x1, lsl 2]
        add     x1, x1, x3
        whilelo p7.s, w1, w2
        b.any   .L2
        ret

[1] https://developer.arm.com/documentation/102476/0101/Introducing-SVE

gcc/ChangeLog:

* config/aarch64/aarch64.cc (aarch64_fold_while_ult_to_ptrue): New.
(aarch64_instruction_selection): Use it.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/sve/fmaxnm_2.c: Update output.
* gcc.target/aarch64/sve/fmaxnm_3.c: Likewise.
* gcc.target/aarch64/sve/fminnm_2.c: Likewise.
* gcc.target/aarch64/sve/fminnm_3.c: Likewise.
* gcc.target/aarch64/sve/slp_12.c: Likewise.
* gcc.target/aarch64/sve/unpacked_fadd_2.c: Likewise.
* gcc.target/aarch64/sve/unpacked_fmul_2.c: Likewise.
* gcc.target/aarch64/sve/unpacked_fsubr_2.c: Likewise.
* gfortran.dg/pr88833.f90: Likewise.
* gcc.target/aarch64/sve/while_ult_1.c: New test.
* gcc.target/aarch64/sve/while_ult_2.c: New test.
* gcc.target/aarch64/sve/while_ult_1_run.c: New test.

24 hours agoAArch64: Move SVE ptrue VL folding helpers
Tamar Christina [Tue, 21 Jul 2026 19:48:39 +0000 (20:48 +0100)] 
AArch64: Move SVE ptrue VL folding helpers

The 3rd patch in this series will modify these functions, but I have to re-order
and extract some shared functionality to avoid duplicate and having to forward
declare stuff.

I thus separated out the refactoring bit from the parts that use and change
these functions.

This patch is NFC.

* config/aarch64/aarch64-acle-builtins.cc
(gimple_folder::fold_to_vl_pred): Refactor folding logic into
aarch64_fold_sve_ptrue_vl.
* config/aarch64/aarch64-protos.h (aarch64_fold_sve_ptrue_vl): New.
* config/aarch64/aarch64.cc (aarch64_instruction_selection): Move down.
(aarch64_fold_sve_ptrue_vl): New.

24 hours agomiddle-end: enable ranger in gimple-isel
Tamar Christina [Tue, 21 Jul 2026 19:48:04 +0000 (20:48 +0100)] 
middle-end: enable ranger in gimple-isel

This enables ranger for use in isel to do some ranged based foldings.

gcc/ChangeLog:

* gimple-isel.cc (pass_gimple_isel::execute): Enable and disable ranger
on fun.

24 hours agoxtensa: Refurbish xtensa_legitimize_address()
Takayuki 'January June' Suwa [Fri, 17 Jul 2026 20:39:58 +0000 (05:39 +0900)] 
xtensa: Refurbish xtensa_legitimize_address()

The successive modifications made to 'xtensa_legitimize_address()' have
worsened the readability of the code, and the modifications themselves
are difficult to understand.

Therefore, this patch resolves these issues by completely rewriting the
function to make its intent clear.

gcc/ChangeLog:

* config/xtensa/xtensa.cc (xtensa_legitimize_address):
Completely rewrite it into an equivalent but more easily under-
standable description.

24 hours agoxtensa: Define LOCAL_REGNO() macro
Takayuki 'January June' Suwa [Fri, 17 Jul 2026 20:37:13 +0000 (05:37 +0900)] 
xtensa: Define LOCAL_REGNO() macro

When the Windowed Register Option (TARGET_WINDOWED_ABI) is enabled, and this
macro is not defined, "phantom" DF livenesses occurs in the function epilogue,
which can hinder certain optimizations.  Indeed, in the following example,
the low-overhead loop optimization is rejected because the epilogue BB, which
succeeds the target loop BB, is incorrectly identified as using the loop
iterator.

     /* example */
     void test(char *q, const char *p, unsigned int n) {
       do
         *q = *p, ++q, ++p;
       while (n-- != 1);
     }

     ;; before (-mabi=windowed ; TARGET_LOOPS)
     test:
      entry sp, 32
      movi.n a8, 0
     .L2:
      add.n a9, a3, a8
      l8ui a10, a9, 0
      add.n a9, a2, a8
      s8i a10, a9, 0
      addi.n a8, a8, 1
      addi.n a4, a4, -1
      bnez.n a4, .L2 ;; incorrectly identified as using A4
      ;; in the epilogue.
      retw.n

This patch fixes the above issue by properly defining the relevant macro.

     ;; after (-mabi=windowed ; TARGET_LOOPS)
     test:
      entry sp, 32
      movi.n a8, 0
      loop a4, .L2_LEND
     .L2:
      add.n a9, a3, a8
      l8ui a10, a9, 0
      add.n a9, a2, a8
      s8i a10, a9, 0
      addi.n a8, a8, 1
      .L2_LEND:
      retw.n

gcc/ChangeLog:

* config/xtensa/xtensa.h (LOCAL_REGNO):
New macro definition.

24 hours agovect: replace usages of SLP_TREE_SCALAR_SMTS where possible
Tamar Christina [Tue, 21 Jul 2026 19:46:33 +0000 (20:46 +0100)] 
vect: replace usages of SLP_TREE_SCALAR_SMTS where possible

Continuing the work started in GCC 12 with g:a0dae768c6f78eba
this patch replaces uses of SLP_TREE_SCALAR_STMTS with SLP_TREE_LANES when used
to determine the number of lanes in the SLP tree.  This de-couples the need to
have the same number of scalar statements as lanes in the SLP tree.

gcc/ChangeLog:

* tree-vect-slp-patterns.cc (compatible_complex_nodes_p): Support
mismatched group sizes and use group size to iterate.
* tree-vect-slp.cc (vect_build_slp_instance,
vect_analyze_slp_reduc_chain, vect_analyze_slp_reduction,
vect_analyze_slp_reduction_group, vect_analyze_slp_instance,
vect_analyze_slp): Compare against lanes instead of .length ().
(vect_optimize_slp_pass::get_result_with_layout): replace .length ()
with .exist ().
(vect_transform_slp_perm_load_1): Use lanes instead of .length ().
(vect_remove_slp_scalar_calls): Replace iterators.
* tree-vect-stmts.cc (vectorizable_shift): Use group size over ops
length.

25 hours agoFix a few false positive warnings with unused/undefined warnings.
Thomas Koenig [Tue, 21 Jul 2026 17:04:48 +0000 (19:04 +0200)] 
Fix a few false positive warnings with unused/undefined warnings.

Trying out the new warnings on actual code found a new false positives.
The charlen of an ALLOCATE was not marked as used, the expression
in SELECT CASE was not marked as used and host-associated variables
were not exempt from testing.

All fixed with the attached patch.

gcc/fortran/ChangeLog:

PR fortran/126333
* resolve.cc (resolve_allocate_deallocate): Resolve charlen of ts
and set as used if present.
(resolve_select): Mark code->expr1 as used.
(find_unused_vs_set): Do not complain about host-associated
variables which are not marked private.

gcc/testsuite/ChangeLog:

PR fortran/126333
* gfortran.dg/warn_undefined_vars_8.f90: New test.
* gfortran.dg/warn_undefined_vars_9.f90: New test.
* gfortran.dg/warn_unused_but_set_variable_5.f90: New test.

29 hours agors6000: Add %W print modifier
Jeevitha [Tue, 21 Jul 2026 15:27:29 +0000 (10:27 -0500)] 
rs6000: Add %W print modifier

Add a new %W print modifier to print_operand that prints the VSX
register number plus two.

Some future Power instruction patterns require printing two VSX
registers corresponding to a __vector_pair operand. The existing
%x print modifier emits the first VSX register using VSX register
numbering. Add a new %W print modifier to emit the second VSX
register of the pair.

2025-07-16  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
    Kishan Parmar  <kishan@linux.ibm.com>

gcc/
* config/rs6000/rs6000.cc (print_operand): Add the `%W`
print modifier to print the VSX register number plus two.

29 hours agoRISC-V: Adjust test case due to allow vwcvt.f.x[u].v overlap
Pan Li [Mon, 20 Jul 2026 07:05:20 +0000 (15:05 +0800)] 
RISC-V: Adjust test case due to allow vwcvt.f.x[u].v overlap

Remove the xfail due to overlap changes.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/pr112431-10.c: Remove xfail.
* gcc.target/riscv/rvv/base/pr112431-11.c: Ditto.
* gcc.target/riscv/rvv/base/pr112431-12.c: Ditto.

Signed-off-by: Pan Li <pan2.li@intel.com>
29 hours agoRISC-V: Add test cases for vfwcvt.f.xu.v reg overlap overlap
Pan Li [Mon, 20 Jul 2026 05:38:42 +0000 (13:38 +0800)] 
RISC-V: Add test cases for vfwcvt.f.xu.v reg overlap overlap

Add test cases for vfwcvt.f.xu.v register group overlap, please
note it is not overlap as much as possible.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u16-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u16-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u16-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u16-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u16-mf4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u32-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u32-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u32-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u32-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-mf4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_xu-u8-mf8.c: New test.

Signed-off-by: Pan Li <pan2.li@intel.com>
29 hours agoRISC-V: Add test cases for vfwcvt.f.x.v reg overlap
Pan Li [Mon, 20 Jul 2026 05:35:43 +0000 (13:35 +0800)] 
RISC-V: Add test cases for vfwcvt.f.x.v reg overlap

Add test cases for vfwcvt.f.x.v register group overlap, please
note it is not overlap as much as possible.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i16-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i16-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i16-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i16-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i16-mf4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i32-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i32-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i32-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i32-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-mf4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f_x-i8-mf8.c: New test.

Signed-off-by: Pan Li <pan2.li@intel.com>
29 hours agoRISC-V: Allow RVV register overlap for vfwcvt.f.x[u]
Pan Li [Mon, 20 Jul 2026 05:32:37 +0000 (13:32 +0800)] 
RISC-V: Allow RVV register overlap for vfwcvt.f.x[u]

Like v[sz]ext.vf8, allow the rvv register overlap
for vfwcvt.f.x[u].v.

gcc/ChangeLog:

* config/riscv/vector.md: Leverage Wvr constraint.

Signed-off-by: Pan Li <pan2.li@intel.com>
29 hours agoout-of-SSA: Preserve storage for split partition decls [PR126341]
Kyrylo Tkachov [Tue, 21 Jul 2026 09:44:06 +0000 (02:44 -0700)] 
out-of-SSA: Preserve storage for split partition decls [PR126341]

create_tmp_var_raw marks a replacement declaration as ignored.  At -O0,
this can change use_register_for_decl from memory for the original user
declaration to a pseudo for the replacement.  A partition can already own
memory from a parameter default definition, which then makes set_rtl reject
that memory for another name in the partition.

If the replacement would use a register, copy DECL_IGNORED_P so it keeps the
storage choice made during coalescing.  Keep declarations that already use
memory unchanged.  Add a checking assertion for the memory invariant.

Bootstrapped and tested on aarch64-none-linux-gnu and x86_64-linux.

gcc/ChangeLog:

PR middle-end/126341
* tree-outof-ssa.cc (split_overlapping_partition_decls): Preserve
DECL_IGNORED_P.  Check that the replacement uses memory.

gcc/testsuite/ChangeLog:

PR middle-end/126341
* gcc.dg/pr126341.c: New test.

Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
29 hours agoSimplify (vec_select:<scalar> (vec_concat ..))
Richard Biener [Mon, 20 Jul 2026 11:57:36 +0000 (13:57 +0200)] 
Simplify (vec_select:<scalar> (vec_concat ..))

The following adds simplification of a scalar mode vec_select wrapping
a vec_concat.  combine sees

(insn 7 4 8 2 (set (reg:V2DF 106)
        (vec_concat:V2DF (plus:DF (vec_select:DF (reg/v:V2DF 101 [ p ])
                    (parallel [
                            (const_int 0 [0])
                        ]))
                (vec_select:DF (reg/v:V2DF 101 [ p ])
                    (parallel [
                            (const_int 1 [0x1])
                        ])))
            (plus:DF (vec_select:DF (reg/v:V2DF 101 [ p ])
                    (parallel [
                            (const_int 0 [0])
                        ]))
                (vec_select:DF (reg/v:V2DF 101 [ p ])
                    (parallel [
                            (const_int 1 [0x1])
                        ]))))) "t.c":5:11 3234 {*sse3_haddv2df3}
     (expr_list:REG_DEAD (reg/v:V2DF 101 [ p ])
        (nil)))
(insn 8 7 9 2 (set (reg:DF 105)
        (vec_select:DF (reg:V2DF 106)
            (parallel [
                    (const_int 0 [0])
                ]))) "t.c":5:11 7297 {sse2_storelpd}
     (expr_list:REG_DEAD (reg:V2DF 106)
        (nil)))

and this should simplify and combine to

(set (reg:DF 105)
    (plus:DF (vec_select:DF (reg:V2DF 109 [ p ])
            (parallel [
                    (const_int 0 [0])
                ]))
        (vec_select:DF (reg:V2DF 109 [ p ])
            (parallel [
                    (const_int 1 [0x1])
                ]))))

which x86 can recognize (but rejects due to consting, see PR126328).
There'll be test coverage in gcc.target/i386/pr54400.c

* simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
Simplify scalar vec_select of vec_concat.

30 hours agodocs: Document that scatters are left-to-right.
Robin Dapp [Tue, 21 Jul 2026 08:37:46 +0000 (10:37 +0200)] 
docs: Document that scatters are left-to-right.

This changes the docs to reflect the vectorizer's assumption that
scatter stores are ordered.  Both, scatters and strided stores are
affected.

gcc/ChangeLog:

* doc/md.texi: Document that scatters are left-to-right.

31 hours agoAVR: Tweak __muldi3_6
Georg-Johann Lay [Tue, 21 Jul 2026 13:18:27 +0000 (15:18 +0200)] 
AVR: Tweak __muldi3_6

This patch changes __muldi3_6 to

__muldi3_6:
    XCALL   __umulhisi3
    add     C2, 22
    adc     C3, 23
    adc     C4, 24
    adc     C5, 25
    adc     C6, __zero_reg__
    adc     C7, __zero_reg__
    ret

which is one cycle faster than the previous

    ...
    adc     C5, 25
    brcc    0f
    adiw    C6, 1
0:  ret

in the case where the BRCC is not taken.
__umulhisi3 clears __zero_reg__, so all is fine.

libgcc/
* config/avr/lib1funcs.S (__muldi3_6): Tweak.

31 hours agoAVR: Add missing SET to __mulQ64_work from previous commit.
Georg-Johann Lay [Tue, 21 Jul 2026 12:25:30 +0000 (14:25 +0200)] 
AVR: Add missing SET to __mulQ64_work from previous commit.

libgcc/
* config/avr/lib1funcs-fixed.S (__mulQ64_work): Add a
SET instruction (for signed) prior to ICALL-ing.

32 hours agotestsuite: remove xfail "vectorized 1 loops" arm_neon [PR124726]
Torbjörn SVENSSON [Mon, 20 Jul 2026 14:30:32 +0000 (16:30 +0200)] 
testsuite: remove xfail "vectorized 1 loops" arm_neon [PR124726]

gcc/testsuite/ChangeLog:

PR testsuite/124726
* gcc.dg/vect/tsvc/vect-tsvc-s124.c: Remove xfail for arm_neon.
* gcc.dg/vect/tsvc/vect-tsvc-s276.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s3111.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s3113.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s312.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s314.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s316.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s317.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s319.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s441.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s443.c: Likewise.
* gcc.dg/vect/tsvc/vect-tsvc-s453.c: Likewise.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
32 hours agotestsuite: remove xfail for arm_mve from ssa-dom-cse-2.c [PR124361]
Torbjörn SVENSSON [Mon, 20 Jul 2026 17:48:27 +0000 (19:48 +0200)] 
testsuite: remove xfail for arm_mve from ssa-dom-cse-2.c [PR124361]

gcc/testsuite/ChangeLog:

PR testsuite/124361
* gcc.dg/tree-ssa/ssa-dom-cse-2.c: Remove xfail for arm_mve.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
32 hours agolibstdc++: Handle ibm128 in generate_canonical tests.
Tomasz Kamiński [Tue, 21 Jul 2026 11:25:13 +0000 (13:25 +0200)] 
libstdc++: Handle ibm128 in generate_canonical tests.

Numeric traits for ibm128 (double-double) reports is_iec559 as true,
and thus was hitting VERIFY(false) default branch.

libstdc++-v3/ChangeLog:

* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
Remove trailing whitespace. Handle 106 (ibm128) mantissa size.

33 hours agoAVR: Add 64-bit fixed-point multiplications to libgcc.
Georg-Johann Lay [Tue, 21 Jul 2026 10:02:40 +0000 (12:02 +0200)] 
AVR: Add 64-bit fixed-point multiplications to libgcc.

This patch adds (un)saturated 64-bit fixed-point multiplications
to libgcc.  The saturating functions are just aliases of the
vanilla versions, which are also saturating.

libgcc/
* config/avr/t-avr (FUNCS_notiny): Add: _umulditi3_raw,
_muluda3,  _muluta3,  _muludq3, _mulda3 _multa3 _muldq3,
_muluQ64_tail, _mulQ64_work, _divsa3 _udivusa3.
* config/avr/asm-defs.h (mov8, ENTRY): New .macro's.
* config/avr/lib1funcs-fixed.S (__umulditi3_raw, __muluda3)
(__muluta3, __muludq3, __muluQ64_tail, __muldq3, __mulda3)
(__multa3, __mulQ64_work): New DEFUN's.
gcc/testsuite/
* gcc.target/avr/fx24-mul.c: New test.

33 hours agolibstdc++: Use 2 * epsilon step for piecewise_constant_distribution tests.
Tomasz Kamiński [Tue, 21 Jul 2026 10:42:18 +0000 (12:42 +0200)] 
libstdc++: Use 2 * epsilon step for piecewise_constant_distribution tests.

This is required to pass test on powerpc64le-unknown-linux-gnu, and
was already the case for piecewise_linear_distribution.

libstdc++-v3/ChangeLog:

* testsuite/26_numerics/random/piecewise_constant_distribution/operators/accessors.cc
(test_precision_depended): Define step as 2 * epsilon().

35 hours agoi386: Split DI<->V2DI patterns before reload with -m32.
Roger Sayle [Tue, 21 Jul 2026 08:45:15 +0000 (09:45 +0100)] 
i386: Split DI<->V2DI patterns before reload with -m32.

While investigating improvements to x86's stv2 pass (to correctly cost
moves between SI<->V4SI and DI<->V2DI), I noticed that we're currently
relatively inefficient for DI mode transfers on 32-bit targets with
SSE2, where reload ultimately decides to perform these moves via the
stack.  It's possible to do better by making the highpart and lowpart
registers explicit before reload.

Consider the test case below:

typedef long long v2di __attribute__ ((__vector_size__ (16)));

long long foo(v2di x)
{
  return x[0];
}

long long ext();
v2di mem;

void bar()
{
  long long x = ext();
  mem = (v2di){x,0};
}

where foo tests V2DI->DI mode, and bar tests DI->V2DI mode.
Currently -m32 -O2 -msse2 generates:

foo:    subl    $28, %esp
        movq    %xmm0, 8(%esp)
        movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    $28, %esp
        ret

bar: subl    $28, %esp
        call    ext
        movl    %eax, 8(%esp)
        movl    %edx, 12(%esp)
        movq    8(%esp), %xmm0
        movaps  %xmm0, mem
        addl    $28, %esp
        ret

With this patch, we now avoid going via the stack:

foo: movd    %xmm0, %eax
        pshufd  $225, %xmm0, %xmm0
        movd    %xmm0, %edx
        ret

bar: subl    $12, %esp
        call    ext
        movd    %eax, %xmm0
        movd    %edx, %xmm1
        punpckldq       %xmm1, %xmm0
        movaps  %xmm0, mem
        addl    $12, %esp
        ret

2026-07-21  Roger Sayle  <roger@nextmovesoftware.com>
    Uros Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog
* config/i386/sse.md (define_split): Split *vec_extractv2di_0_sse
before reload on !TARGET_64BIT with TARGET_SSE2.
(define_split): Likewise split *vec_concatv2di_0 before reload
on !TARGET_64BIT with TARGET_SSE2.

gcc/testsuite/ChangeLog
* gcc.target/i386/sse2-stv-7.c: New test case.
* gcc.target/i386/sse4_1-stv-13.c: Likewise.

39 hours agolibstdc++: Introduce GLIBCXX_3.4.37 version for symbols not backported to GCC-16.
Tomasz Kamiński [Mon, 20 Jul 2026 09:53:48 +0000 (11:53 +0200)] 
libstdc++: Introduce GLIBCXX_3.4.37 version for symbols not backported to GCC-16.

As part of the backport of r17-471-ge79f0f818c0e42 and r17-2193-g50cbacfaa1e776),
the corresponding exports of chrono::__detail::__recent_leap_second_info and
specializations of basic_format_arg::_M_handle_unrecognized also need to be
introduced. This also require bump of the libtool_VERSION to 3.4.36.

This patch bumps version again to 3.4.37 and moves remaining symbols defined
in GCC 17 (basic_string's _S_allocate_at_least and _M_create_plus) to it.

libstdc++-v3/ChangeLog:

* acinclude.m4 (libtool_VERSION): Bump version.
* config/abi/pre/gnu.ver (GLIBCXX_3.4.37): Add new symbol
version and move basic_string's _S_allocate_at_least and
_M_create_plus symbols to it.
* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
Regenerate and include new 3.4.36 symbols.
* config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt:
Likewise.
* configure: Regenerate.
* testsuite/util/testsuite_abi.cc: Update known_versions
and latestp.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
41 hours agox86: Don't set cum->preserve_none_abi for x86-64 MS calls
H.J. Lu [Wed, 13 May 2026 00:27:50 +0000 (08:27 +0800)] 
x86: Don't set cum->preserve_none_abi for x86-64 MS calls

In 64-bit mode, preserve_none attribute uses the same number of integer
parameters passed in registers as SYSV ABI, but with a different set of
6 registers, by setting cum->preserve_none_abi to true.  Don't set
cum->preserve_none_abi to true for MS ABI functions with preserve_none
attribute to keep the number of integer parameters passed in registers
unchanged as 4.  This treats preserve_none attribute the same way as
no_callee_saved_registers attribute for MS ABI functions.

gcc/

PR target/125297
* config/i386/i386.cc (init_cumulative_args): Don't set
cum->preserve_none_abi to true for MS ABI functions.
* doc/extend.texi: Update x86-64 preserve_none attribute
documentation.

gcc/testsuite/

PR target/125297
* gcc.target/i386/preserve-none-1.c: Skip llp64 target.
* gcc.target/i386/preserve-none-31a.c: New test.
* gcc.target/i386/preserve-none-31b.c: Likewise.
* gcc.target/i386/preserve-none-32.c: Likewise.
* gcc.target/i386/preserve-none-33a.c: Likewise.
* gcc.target/i386/preserve-none-33b.c: Likewise.
* gcc.target/i386/preserve-none-34a.c: Likewise.
* gcc.target/i386/preserve-none-34b.c: Likewise.
* gcc.target/i386/preserve-none-35a.c: Likewise.
* gcc.target/i386/preserve-none-35b.c: Likewise.
* gcc.target/i386/preserve-none-35c.c: Likewise.
* gcc.target/i386/preserve-none-35d.c: Likewise.
* gcc.target/i386/preserve-none-35e.c: Likewise.
* gcc.target/i386/preserve-none-35f.c: Likewise.
* gcc.target/i386/preserve-none-35g.c: Likewise.
* gcc.target/i386/preserve-none-36a.c: Likewise.
* gcc.target/i386/preserve-none-36b.c: Likewise.
* gcc.target/i386/preserve-none-36c.c: Likewise.
* gcc.target/i386/preserve-none-36d.c: Likewise.
* gcc.target/i386/preserve-none-36e.c: Likewise.
* gcc.target/i386/preserve-none-36f.c: Likewise.
* gcc.target/i386/preserve-none-36g.c: Likewise.
* gcc.target/i386/preserve-none-37a.c: Likewise.
* gcc.target/i386/preserve-none-37b.c: Likewise.
* gcc.target/i386/preserve-none-37c.c: Likewise.
* gcc.target/i386/preserve-none-37d.c: Likewise.
* gcc.target/i386/preserve-none-37e.c: Likewise.
* gcc.target/i386/preserve-none-37f.c: Likewise.
* gcc.target/i386/preserve-none-37g.c: Likewise.
* gcc.target/i386/preserve-none-37h.c: Likewise.
* gcc.target/i386/preserve-none-37i.c: Likewise.
* gcc.target/i386/preserve-none-37j.c: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
44 hours agoDaily bump.
GCC Administrator [Tue, 21 Jul 2026 00:16:43 +0000 (00:16 +0000)] 
Daily bump.

46 hours agoa68: fix lowering of maxabschar [PR algol68/126330]
Jose E. Marchesi [Mon, 20 Jul 2026 21:13:56 +0000 (23:13 +0200)] 
a68: fix lowering of maxabschar [PR algol68/126330]

Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/algol68/ChangeLog

PR algol68/126330
* a68-low-chars.cc (a68_char_max): abscharmax is an int, not a
char.

gcc/testsuite/ChangeLog

* algol68/execute/max-abs-char-1.a68: New test.

46 hours agoc++: implement CWG3020 - Missing specification for __has_cpp_attribute(indeterminate...
Jakub Jelinek [Mon, 20 Jul 2026 21:32:40 +0000 (23:32 +0200)] 
c++: implement CWG3020 - Missing specification for __has_cpp_attribute(indeterminate) [PR126309]

The paper which introduced indeterminate attribute has not added a value
for __has_cpp_attribute, so I've missed it and didn't add it to
c_common_has_attribute.  Later CWG issue fixed this up.

2026-07-20  Jakub Jelinek  <jakub@redhat.com>

PR c++/126309
* c-lex.cc: Implement CWG3020 - Missing specification for
__has_cpp_attribute(indeterminate).
(c_common_has_attribute): Handle __has_cpp_attribute (indeterminate).

* g++.dg/cpp26/feat-cxx26.C: Test __has_cpp_attribute (indeterminate).
* g++.dg/cpp29/feat-cxx29.C: Likewise.

Reviewed-by: Jason Merrill <jason@redhat.com>
47 hours agomatch: Combine two patterns into for neeq (ne eq) and fix typo. [PR64992]
Kael Andrew Alonzo Franco [Mon, 20 Jul 2026 20:36:19 +0000 (16:36 -0400)] 
match: Combine two patterns into for neeq (ne eq) and fix typo. [PR64992]

This simplify r13-2048 and fix typo on C being zero_one_valued_p to
X being zero_one_valued_p.

Bootstrapped and regtested on x86_64-pc-linux-gnu.

PR tree-optimization/64992

gcc/ChangeLog:

* match.pd: Combine two patterns into for neeq (ne eq) and fix typo.

Signed-off-by: Kael Andrew Franco <kaelfandrew@gmail.com>
2 days agoa68: new version of proc whole, dependencies and test
chris hermansen [Mon, 20 Jul 2026 16:42:15 +0000 (18:42 +0200)] 
a68: new version of proc whole, dependencies and test

A replacement for proc whole provided in the Revised Report on p.159.

Several factors motivated me to propose this replacement for the RR code.

Most importantly, the RR whole fails for an argument value of -max_int - 1, as
well as any short short, short, long or long long equivalents, because the RR
version applies the operator ABS to the argument, and on any hardware using
twos-complement representation, ABS (-max_int - 1) cannot provide a correct
positive value.  This replacement code does not apply ABS to the argument and
is therefore immune to this problem.

As well, replacement works on the argument from left to right, rather than
right to left (the approach taken in the RR version).  Working from left to
right in this way requires either:
  - processing all 10 digits (speaking of 32 bit integers for the time being),
    meaning worthless effort for every leading zero digit, or
  - determining how many significant digits there are, which means some lookup
    code (I believe this is faster but I haven't benchmarked it at this point)

Having determined beforehand how many significant digits there are, we can
allocate a working buffer of exactly the right length, which eliminates:
  - the (expensive) digit-by-digit string concatenation approach used in the RR
    version
  - the need to always ensure a long-enough fixed-length buffer should GNU Algol
    68 begin to support longer integers (128, 256, whatever)
  - the need to trim a fixed-length buffer to the desired length once the
    converted integer is in place

Finally, working left to right
  - eliminates the need to apply ABS to the number to be converted, as noted
    previously, thereby eliminating the dependency on ABS
  - replaces one (expensive) integer division with one (less expensive)
    integer multiplication using a looked-up power of 10

van Vliet's proposed whole and subwhole are more efficient than the RR version,
but still depend on ABS delivering a correct value.

Included with this replacement proc whole is a test program to ensure that the
correct results for the extreme values are produced, along with a set of
randomly chosen other values distributed across the range.

Signed-off-by: Chris Hermansen <clhermansen@gmail.com>
libga68/ChangeLog

* standard.a68.in (Integer): New mode.
(whole_max_entry): New variable.
(whole_p10): Likewise.
(whole_stop_after): Likewise.
(whole_powers_of_10): Likewise.
(WHOLEDIGITS): New operator.
(whole): Rewrite.
(subwhole): Likewise.

gcc/testsuite/ChangeLog

* algol68/execute/whole-1.a68: New test.

2 days agobpf: TARGET_INSN_COST: don't hardcode 1 for default ...
Vineet Gupta [Mon, 20 Jul 2026 18:00:56 +0000 (11:00 -0700)] 
bpf: TARGET_INSN_COST: don't hardcode 1 for default ...

... instead use pattern_cost () as used by other backends

gcc/ChangeLog:

* config/bpf/bpf.cc (bpf_insn_cost): Return pattern_cost () by default.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
2 days agobpf: TARGET_RTX_COSTS: treat 32-bit CONST_INT as cheap/free
Vineet Gupta [Mon, 20 Jul 2026 17:59:20 +0000 (10:59 -0700)] 
bpf: TARGET_RTX_COSTS: treat 32-bit CONST_INT as cheap/free

This is to prefer constant return to be setup from imm constant vs.
using a prior reg known to have the same value (by control flow analysis).
While there's nothing wrong with existing approach, it can sometimes leads
to additional sign-extensions and other corner cases which trip up the
bpf kernel verifier bounds checking for return reg.The verifier improvements
are being worked on but lets adjust the cost model anyways so that constants
are favored. There's no additional overhead from new codegen anyways.

For accompanying test const-cost-model.c, at -O2

          Before               |            After
-------------------------------+------------------------------
  r1 = 4                       |  r1 = 4
  call bpf_copy_from_user_str  |  call bpf_copy_from_user_str
  r1 = (s32) r0                |  ...
  ...                          |  r1 = 4                          <---
  call bpf_copy_from_user_str  |  call bpf_copy_from_user_str

This causes 4 additioanl bpf kernel selftests to pass (as of v7.1)

| -Summary: 596/5387 PASSED, 123 SKIPPED, 114 FAILED
| +Summary: 600/5422 PASSED, 123 SKIPPED, 110 FAILED
|  #77      cgroup_xattr:OK
|  #112     exe_ctx:OK
|  #220     mem_rdonly_untrusted:OK
|  #574     verifier_global_ptr_args:OK

gcc/ChangeLog:

* config/bpf/bpf.cc (bpf_rtx_costs): set CONST_INT 0 insns.
* config/bpf/bpf.h (BPF_IMM32_P): New helper macro.
* config/bpf/predicates.md (imm32_operand): Use new macro.

gcc/testsuite/ChangeLog:

* gcc.target/bpf/const-cost-model.c: New test prefers const.
* gcc.target/bpf/const-cost-model-2.c: New test prefers const.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
2 days agobpf: TARGET_RTX_COSTS: avoid multiply synthesis
Vineet Gupta [Mon, 20 Jul 2026 17:58:31 +0000 (10:58 -0700)] 
bpf: TARGET_RTX_COSTS: avoid multiply synthesis

The default cost of MULT/DIV/MOD in rtx_cost () is high: 5,7 insns
respectively. This causes even a trivial mpy by 7 to be synthesized.
Given these have direct equivalents in BPF ISA, fix the cost to generate
native BPF insns.

Note the existing divmod-licall-2.c test was a bit fragile as it forced
cast signed an actual unsigned int which is provably non-negative.
In the new cost model compiler would generate a native unsigned divide
even though it not available for -mcpu=v3, tripping up the test.
Fix by ensuring the arg is actually signed.

gcc/ChangeLog:

* config/bpf/bpf.cc (bpf_rtx_costs): Assign MPY/DIV/MOD cost 1.

gcc/testsuite/ChangeLog:

* gcc.target/bpf/divmod-libcall-2.c: Change args/ret to signed.
* gcc.target/bpf/mult-large.c: New test.
* gcc.target/bpf/mult-small.c: New test.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
2 days agocobol: Insert "Do not edit" text into generated DejaGNU tests.
Robert Dubner [Mon, 20 Jul 2026 17:17:25 +0000 (13:17 -0400)] 
cobol: Insert "Do not edit" text into generated DejaGNU tests.

The tests in gcc/testsuite/cobol.dg/group2 are created by a script from a
larger set of autotest tests.  After a brief comedy of procedural errors, we
decided to incorporate "Do not edit" comments into those tests.

gcc/cobol/ChangeLog:

* copybook.h (_COPYBOOK_H): Remove #include <sys/types.h>.
* gcobol.1: Documentation.
* parse.y: Use int_size_in_bytes.
* util.cc (cobol_filename): Change dbgmsg formatting.

gcc/testsuite/ChangeLog:

* cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob:
Start the test with a "Do not edit" comment.
* cobol.dg/group2/88_level_with_FALSE_IS_clause.cob: Likewise.
* cobol.dg/group2/88_level_with_FILLER.cob: Likewise.
* cobol.dg/group2/88_level_with_THRU.cob: Likewise.
* cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__1_.cob: Likewise.
* cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__2_.cob: Likewise.
* cobol.dg/group2/ACCEPT_FROM_ENVIRONMENT-NAME.cob: Likewise.
* cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__1_.cob: Likewise.
* cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.cob: Likewise.
* cobol.dg/group2/ACCEPT_foo_FROM_COMMAND-LINE_1_.cob: Likewise.
* cobol.dg/group2/ADD_1_2_TO_3_GIVING_B.cob: Likewise.
* cobol.dg/group2/ADD_CORRESPONDING.cob: Likewise.
* cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob: Likewise.
* cobol.dg/group2/ALLOCATE_Rules_6_-_9._Without_OPTION_INITIALIZE_Without_-fdefaultbyte___ASCII_.cob:
Likewise.
* cobol.dg/group2/ALLOCATE_Rules_6_-_9._Without_OPTION_INITIALIZE_Without_-fdefaultbyte___EBCDIC_.cob:
Likewise.
* cobol.dg/group2/ALLOCATE_Rules_6_-_9_Without_OPTION_INITIALIZE_With_-fdefaultbyte___UTF16_.cob:
Likewise.
* cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob: Likewise.
* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob: Likewise.
* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob: Likewise.
* cobol.dg/group2/ALPHABETIC-LOWER_test.cob: Likewise.
* cobol.dg/group2/ALPHABETIC-UPPER_test.cob: Likewise.
* cobol.dg/group2/ALPHABETIC_test.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__1_.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__2_.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__3_.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__4_.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__5_.cob: Likewise.
* cobol.dg/group2/ANY_LENGTH__7_.cob: Likewise.
* cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob: Likewise.
* cobol.dg/group2/Alphanumeric_and_binary_numeric.cob: Likewise.
* cobol.dg/group2/Assorted_SPECIAL-NAMES_CLASS.cob: Likewise.
* cobol.dg/group2/BINARY_and_COMP-5__little-endian_.cob: Likewise.
* cobol.dg/group2/BLANK_WHEN_ZERO.cob: Likewise.
* cobol.dg/group2/CALL_with_OCCURS_DEPENDING_ON.cob: Likewise.
* cobol.dg/group2/CALL_with_OMITTED_parameter.cob: Likewise.
* cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob: Likewise.
* cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob: Likewise.
* cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob: Likewise.
* cobol.dg/group2/CBL_DELETE_FILE.cob: Likewise.
* cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob: Likewise.
* cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob: Likewise.
* cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob: Likewise.
* cobol.dg/group2/CDF2_-_DEFINE_FOO_AS_literal-1.cob: Likewise.
* cobol.dg/group2/CDF2_Trouble_with___IF__1_.cob: Likewise.
* cobol.dg/group2/CDF2_Trouble_with___IF__2_.cob: Likewise.
* cobol.dg/group2/CDF4_.cob: Likewise.
* cobol.dg/group2/CDF_Feature_.cob: Likewise.
* cobol.dg/group2/CDF_IS_NOT_DEFINED.cob: Likewise.
* cobol.dg/group2/CDF__1__IF____text_.cob: Likewise.
* cobol.dg/group2/CDF__2__IF____number_.cob: Likewise.
* cobol.dg/group2/CDF__3__ALL_NUMERIC_COMPARISONS.cob: Likewise.
* cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_ASCII.cob: Likewise.
* cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_EBCDIC.cob: Likewise.
* cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob: Likewise.
* cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob: Likewise.
* cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob: Likewise.
* cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob: Likewise.
* cobol.dg/group2/COMP-5_Sanity_Check_.cob: Likewise.
* cobol.dg/group2/COMP-6_arithmetic.cob: Likewise.
* cobol.dg/group2/COMP-6_numeric_test.cob: Likewise.
* cobol.dg/group2/COMP-6_used_with_DISPLAY.cob: Likewise.
* cobol.dg/group2/COMP-6_used_with_MOVE.cob: Likewise.
* cobol.dg/group2/COMPUTE_multiplication_to_FIX4.cob: Likewise.
* cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob: Likewise.
* cobol.dg/group2/CURRENCY_SIGN.cob: Likewise.
* cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob: Likewise.
* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob: Likewise.
* cobol.dg/group2/Checking_IS_NUMERIC.cob: Likewise.
* cobol.dg/group2/Class_check_with_reference_modification.cob: Likewise.
* cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob: Likewise.
* cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob: Likewise.
* cobol.dg/group2/Complex_EVALUATE__1_.cob: Likewise.
* cobol.dg/group2/Complex_EVALUATE__2_.cob: Likewise.
* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_ASCII_EBCDIC.cob: Likewise.
* cobol.dg/group2/Complex_IF.cob: Likewise.
* cobol.dg/group2/Complex_INITIALIZE_with_nested_tables__1_.cob: Likewise.
* cobol.dg/group2/Complex_INITIALIZE_with_nested_tables__2_.cob: Likewise.
* cobol.dg/group2/Concatenation_operator.cob: Likewise.
* cobol.dg/group2/Contained_program_visibility__3_.cob: Likewise.
* cobol.dg/group2/Contained_program_visibility__4_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__1_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__2_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__3_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__4_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__5_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__6_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__7_.cob: Likewise.
* cobol.dg/group2/Context_sensitive_words__8_.cob: Likewise.
* cobol.dg/group2/DEBUG-ITEM_using_mh_identical.cob: Likewise.
* cobol.dg/group2/DEBUG_Line.cob: Likewise.
* cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob: Likewise.
* cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob: Likewise.
* cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob: Likewise.
* cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob: Likewise.
* cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob: Likewise.
* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob: Likewise.
* cobol.dg/group2/DISPLAY__Sign_ASCII__2_.cob: Likewise.
* cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob: Likewise.
* cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob: Likewise.
* cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob: Likewise.
* cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob: Likewise.
* cobol.dg/group2/DIVIDE_binary-long_giving_remainder.cob: Likewise.
* cobol.dg/group2/DIVIDE_numeric-display_giving_remainder.cob: Likewise.
* cobol.dg/group2/Default_Arithmetic__1_.cob: Likewise.
* cobol.dg/group2/Dynamic_reference_modification.cob: Likewise.
* cobol.dg/group2/EC-BOUND-REF-MOD_checking_process_termination.cob: Likewise.
* cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob: Likewise.
* cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob: Likewise.
* cobol.dg/group2/ENTRY_statement.cob: Likewise.
* cobol.dg/group2/EVALUATE_WHEN_NEGATIVE.cob: Likewise.
* cobol.dg/group2/EVALUATE__A__OR__a_.cob: Likewise.
* cobol.dg/group2/EVALUATE_condition__1_.cob: Likewise.
* cobol.dg/group2/EVALUATE_condition__2_.cob: Likewise.
* cobol.dg/group2/EVALUATE_doubled_WHEN.cob: Likewise.
* cobol.dg/group2/EVALUATE_with_WHEN_using_condition-1.cob: Likewise.
* cobol.dg/group2/EXIT_PARAGRAPH.cob: Likewise.
* cobol.dg/group2/EXIT_PERFORM.cob: Likewise.
* cobol.dg/group2/EXIT_PERFORM_CYCLE.cob: Likewise.
* cobol.dg/group2/EXIT_SECTION.cob: Likewise.
* cobol.dg/group2/FIND-STRING__forward_.cob: Likewise.
* cobol.dg/group2/FIND-STRING__reverse_.cob: Likewise.
* cobol.dg/group2/FIXED_FORMAT_data_in_cols_73_and_beyond.cob: Likewise.
* cobol.dg/group2/FIXED_FORMAT_data_misplaced_asterisk.cob: Likewise.
* cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob: Likewise.
* cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob: Likewise.
* cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob: Likewise.
* cobol.dg/group2/FUNCTION_ABS.cob: Likewise.
* cobol.dg/group2/FUNCTION_ACOS.cob: Likewise.
* cobol.dg/group2/FUNCTION_ALL_INTRINSIC_simple_test.cob: Likewise.
* cobol.dg/group2/FUNCTION_ANNUITY.cob: Likewise.
* cobol.dg/group2/FUNCTION_ASIN.cob: Likewise.
* cobol.dg/group2/FUNCTION_ATAN.cob: Likewise.
* cobol.dg/group2/FUNCTION_BIGGER-POINTER.cob: Likewise.
* cobol.dg/group2/FUNCTION_BIGGER-POINTER__2_.cob: Likewise.
* cobol.dg/group2/FUNCTION_BYTE-LENGTH.cob: Likewise.
* cobol.dg/group2/FUNCTION_CHAR.cob: Likewise.
* cobol.dg/group2/FUNCTION_COMBINED-DATETIME.cob: Likewise.
* cobol.dg/group2/FUNCTION_CONCAT___CONCATENATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_CONCAT_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_CONVERT.cob: Likewise.
* cobol.dg/group2/FUNCTION_COS.cob: Likewise.
* cobol.dg/group2/FUNCTION_CURRENT-DATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_DATE-OF-INTEGER.cob: Likewise.
* cobol.dg/group2/FUNCTION_DATE-TO-YYYYMMDD.cob: Likewise.
* cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob: Likewise.
* cobol.dg/group2/FUNCTION_DAY-OF-INTEGER.cob: Likewise.
* cobol.dg/group2/FUNCTION_DAY-TO-YYYYDDD.cob: Likewise.
* cobol.dg/group2/FUNCTION_E.cob: Likewise.
* cobol.dg/group2/FUNCTION_EXCEPTION-FILE.cob: Likewise.
* cobol.dg/group2/FUNCTION_EXCEPTION-STATEMENT.cob: Likewise.
* cobol.dg/group2/FUNCTION_EXCEPTION-STATUS.cob: Likewise.
* cobol.dg/group2/FUNCTION_EXP.cob: Likewise.
* cobol.dg/group2/FUNCTION_EXP10.cob: Likewise.
* cobol.dg/group2/FUNCTION_FACTORIAL.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-DATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-DATETIME.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-DATETIME_with_ref_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-DATE_TIME_DATETIME.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-DATE_with_ref_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-TIME_DP.COMMA.cob: Likewise.
* cobol.dg/group2/FUNCTION_FORMATTED-TIME_with_ref_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_FRACTION-PART.cob: Likewise.
* cobol.dg/group2/FUNCTION_HEX-OF.cob: Likewise.
* cobol.dg/group2/FUNCTION_HIGHEST-ALGEBRAIC.cob: Likewise.
* cobol.dg/group2/FUNCTION_INTEGER-OF-DATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_INTEGER-OF-DAY.cob: Likewise.
* cobol.dg/group2/FUNCTION_INTEGER-OF-FORMATTED-DATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_INTEGER-PART.cob: Likewise.
* cobol.dg/group2/FUNCTION_INTEGER.cob: Likewise.
* cobol.dg/group2/FUNCTION_LENGTH__1_.cob: Likewise.
* cobol.dg/group2/FUNCTION_LENGTH__2_.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOCALE-COMPARE.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOCALE-DATE.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOCALE-TIME-FROM-SECONDS.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOCALE-TIME.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOG.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOG10.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOWER-CASE.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOWER-CASE_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_LOWEST-ALGEBRAIC.cob: Likewise.
* cobol.dg/group2/FUNCTION_MAX.cob: Likewise.
* cobol.dg/group2/FUNCTION_MEAN.cob: Likewise.
* cobol.dg/group2/FUNCTION_MEDIAN.cob: Likewise.
* cobol.dg/group2/FUNCTION_MIDRANGE.cob: Likewise.
* cobol.dg/group2/FUNCTION_MIN.cob: Likewise.
* cobol.dg/group2/FUNCTION_MODULE-NAME.cob: Likewise.
* cobol.dg/group2/FUNCTION_MOD__invalid_.cob: Likewise.
* cobol.dg/group2/FUNCTION_MOD__valid_.cob: Likewise.
* cobol.dg/group2/FUNCTION_NUMVAL-C.cob: Likewise.
* cobol.dg/group2/FUNCTION_NUMVAL-C_DP.COMMA.cob: Likewise.
* cobol.dg/group2/FUNCTION_NUMVAL-F.cob: Likewise.
* cobol.dg/group2/FUNCTION_NUMVAL.cob: Likewise.
* cobol.dg/group2/FUNCTION_ORD-MAX.cob: Likewise.
* cobol.dg/group2/FUNCTION_ORD-MIN.cob: Likewise.
* cobol.dg/group2/FUNCTION_ORD.cob: Likewise.
* cobol.dg/group2/FUNCTION_PI.cob: Likewise.
* cobol.dg/group2/FUNCTION_PRESENT-VALUE.cob: Likewise.
* cobol.dg/group2/FUNCTION_RANDOM.cob: Likewise.
* cobol.dg/group2/FUNCTION_RANGE.cob: Likewise.
* cobol.dg/group2/FUNCTION_REM__invalid_.cob: Likewise.
* cobol.dg/group2/FUNCTION_REM__valid_.cob: Likewise.
* cobol.dg/group2/FUNCTION_REVERSE.cob: Likewise.
* cobol.dg/group2/FUNCTION_REVERSE_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_SECONDS-FROM-FORMATTED-TIME.cob: Likewise.
* cobol.dg/group2/FUNCTION_SECONDS-PAST-MIDNIGHT.cob: Likewise.
* cobol.dg/group2/FUNCTION_SIGN.cob: Likewise.
* cobol.dg/group2/FUNCTION_SIN.cob: Likewise.
* cobol.dg/group2/FUNCTION_SQRT.cob: Likewise.
* cobol.dg/group2/FUNCTION_SQRT__2_.cob: Likewise.
* cobol.dg/group2/FUNCTION_STANDARD-DEVIATION.cob: Likewise.
* cobol.dg/group2/FUNCTION_SUBSTITUTE-CASE.cob: Likewise.
* cobol.dg/group2/FUNCTION_SUBSTITUTE-CASE_with_reference_mod.cob: Likewise.
* cobol.dg/group2/FUNCTION_SUBSTITUTE.cob: Likewise.
* cobol.dg/group2/FUNCTION_SUBSTITUTE_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_SUM.cob: Likewise.
* cobol.dg/group2/FUNCTION_TAN.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-DATE-YYYYMMDD.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-DAY-YYYYDDD__1_.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-DAY-YYYYDDD__2_.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-FORMATTED-DATETIME_DP.COMMA.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-FORMATTED-DATETIME_additional.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-FORMATTED-DATETIME_with_dates.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-FORMATTED-DATETIME_with_datetimes.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-FORMATTED-DATETIME_with_times.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-NUMVAL-C.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-NUMVAL-F.cob: Likewise.
* cobol.dg/group2/FUNCTION_TEST-NUMVAL.cob: Likewise.
* cobol.dg/group2/FUNCTION_TRIM.cob: Likewise.
* cobol.dg/group2/FUNCTION_TRIM_with_NATIONAL_characters.cob: Likewise.
* cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob: Likewise.
* cobol.dg/group2/FUNCTION_TRIM_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_TRIM_zero_length.cob: Likewise.
* cobol.dg/group2/FUNCTION_UPPER-CASE.cob: Likewise.
* cobol.dg/group2/FUNCTION_UPPER-CASE_with_reference_modding.cob: Likewise.
* cobol.dg/group2/FUNCTION_VARIANCE.cob: Likewise.
* cobol.dg/group2/FUNCTION_WHEN-COMPILED.cob: Likewise.
* cobol.dg/group2/FUNCTION_YEAR-TO-YYYY.cob: Likewise.
* cobol.dg/group2/FUNCTION_as_CALL_parameter_BY_CONTENT.cob: Likewise.
* cobol.dg/group2/Fixed_continuation_indicator.cob: Likewise.
* cobol.dg/group2/Floating_continuation_indicator__1_.cob: Likewise.
* cobol.dg/group2/Fundamental_INSPECT_BACKWARD_REPLACING.cob: Likewise.
* cobol.dg/group2/Fundamental_INSPECT_BACKWARD_TALLYING.cob: Likewise.
* cobol.dg/group2/Fundamental_INSPECT_REPLACING.cob: Likewise.
* cobol.dg/group2/Fundamental_INSPECT_TALLYING.cob: Likewise.
* cobol.dg/group2/GCC_125616_RT3601_-_IBM_incorrect_DISPLAY_of_COMP-1_COMP-2_float.cob:
Likewise.
* cobol.dg/group2/GLOBAL_FD__1_.cob: Likewise.
* cobol.dg/group2/GLOBAL_FD__2_.cob: Likewise.
* cobol.dg/group2/GLOBAL_FD__3_.cob: Likewise.
* cobol.dg/group2/GLOBAL_FD__4_.cob: Likewise.
* cobol.dg/group2/GLOBAL_at_lower_level.cob: Likewise.
* cobol.dg/group2/GLOBAL_at_same_level.cob: Likewise.
* cobol.dg/group2/Hexadecimal_literal.cob: Likewise.
* cobol.dg/group2/IBM_dialect_COMP_redefined_by_POINTER_as_64-bit.cob: Likewise.
* cobol.dg/group2/INITIALIZE_OCCURS_with_SIGN_LEADING___TRAILING.cob: Likewise.
* cobol.dg/group2/INITIALIZE_OCCURS_with_numeric_edited.cob: Likewise.
* cobol.dg/group2/INITIALIZE_complex_group__1_.cob: Likewise.
* cobol.dg/group2/INITIALIZE_complex_group__2_.cob: Likewise.
* cobol.dg/group2/INITIALIZE_group_entry_with_OCCURS.cob: Likewise.
* cobol.dg/group2/INITIALIZE_of_EXTERNAL_data_items.cob: Likewise.
* cobol.dg/group2/INITIALIZE_with_-defaultbyte__ASCII_.cob: Likewise.
* cobol.dg/group2/INITIALIZE_with_-defaultbyte__EBCDIC_.cob: Likewise.
* cobol.dg/group2/INITIALIZE_with_FILLER.cob: Likewise.
* cobol.dg/group2/INITIALIZE_with_REDEFINES.cob: Likewise.
* cobol.dg/group2/INITIALIZE_with_reference_modification.cob: Likewise.
* cobol.dg/group2/INSPECT_BACKWARD_REPLACING_LEADING.cob: Likewise.
* cobol.dg/group2/INSPECT_BACKWARD_REPLACING_TRAILING.cob: Likewise.
* cobol.dg/group2/INSPECT_BACKWARD_simple_CONVERTING.cob: Likewise.
* cobol.dg/group2/INSPECT_BACKWARD_simple_REPLACING.cob: Likewise.
* cobol.dg/group2/INSPECT_BACKWARD_simple_TALLYING.cob: Likewise.
* cobol.dg/group2/INSPECT_CONVERTING_NULL.cob: Likewise.
* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constant.cob: Likewise.
* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_1.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_2.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_3.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_4.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_5-f.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_5-r.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_5.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_6.cob: Likewise.
* cobol.dg/group2/INSPECT_ISO_Example_7.cob: Likewise.
* cobol.dg/group2/INSPECT_No_repeat_conversion_check.cob: Likewise.
* cobol.dg/group2/INSPECT_REPLACING_LEADING_ZEROS_BY_SPACES.cob: Likewise.
* cobol.dg/group2/INSPECT_REPLACING_figurative_constant.cob: Likewise.
* cobol.dg/group2/INSPECT_TALLYING_AFTER.cob: Likewise.
* cobol.dg/group2/INSPECT_TALLYING_BEFORE.cob: Likewise.
* cobol.dg/group2/INSPECT_TALLYING_REPLACING_ISO_Example.cob: Likewise.
* cobol.dg/group2/INSPECT_TRAILING.cob: Likewise.
* cobol.dg/group2/Index_and_parenthesized_expression.cob: Likewise.
* cobol.dg/group2/Indicators_______________-____D__.cob: Likewise.
* cobol.dg/group2/Intrinsic_Function_ABS.cob: Likewise.
* cobol.dg/group2/Intrinsic_Function_ACOS.cob: Likewise.
* cobol.dg/group2/Intrinsic_Function_ANNUITY.cob: Likewise.
* cobol.dg/group2/Intrinsic_Function_DATE-YYYYMMDD.cob: Likewise.
* cobol.dg/group2/Intrinsic_Function_NUMVAL.cob: Likewise.
* cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__3_.cob: Likewise.
* cobol.dg/group2/LENGTH_OF_omnibus.cob: Likewise.
* cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob: Likewise.
* cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob: Likewise.
* cobol.dg/group2/Large_PIC_10000000_.cob: Likewise.
* cobol.dg/group2/Length_overflow__1_.cob: Likewise.
* cobol.dg/group2/Length_overflow__2_.cob: Likewise.
* cobol.dg/group2/Length_overflow_with_offset__1_.cob: Likewise.
* cobol.dg/group2/Length_overflow_with_offset__2_.cob: Likewise.
* cobol.dg/group2/Length_overflow_with_offset__3_.cob: Likewise.
* cobol.dg/group2/Long_Division.cob: Likewise.
* cobol.dg/group2/MOVE_LEVEL_78.cob: Likewise.
* cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob: Likewise.
* cobol.dg/group2/MOVE_X_000203_.cob: Likewise.
* cobol.dg/group2/MOVE_Z_literal_.cob: Likewise.
* cobol.dg/group2/MOVE_indexes.cob: Likewise.
* cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob: Likewise.
* cobol.dg/group2/MOVE_to_JUSTIFIED_items.cob: Likewise.
* cobol.dg/group2/MOVE_to_edited_item__1_.cob: Likewise.
* cobol.dg/group2/MOVE_to_edited_item__2_.cob: Likewise.
* cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob: Likewise.
* cobol.dg/group2/MOVE_to_itself.cob: Likewise.
* cobol.dg/group2/MOVE_with_group_refmod.cob: Likewise.
* cobol.dg/group2/MOVE_with_refmod.cob: Likewise.
* cobol.dg/group2/MOVE_with_refmod__variable_.cob: Likewise.
* cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob: Likewise.
* cobol.dg/group2/MULTIPLY_to_FIX4.cob: Likewise.
* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob: Likewise.
* cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob: Likewise.
* cobol.dg/group2/N-Queens_algorithm.cob: Likewise.
* cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob: Likewise.
* cobol.dg/group2/Nested_PERFORM.cob: Likewise.
* cobol.dg/group2/Non-numeric_data_in_numeric-display__1_.cob: Likewise.
* cobol.dg/group2/Non-numeric_data_in_packed_decimal.cob: Likewise.
* cobol.dg/group2/Non-overflow_after_overflow.cob: Likewise.
* cobol.dg/group2/Numeric-display_sign_encoding__2_.cob: Likewise.
* cobol.dg/group2/Numeric-display_sign_encoding_sanity_check.cob: Likewise.
* cobol.dg/group2/Numeric_operations__1_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__2_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__3_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__4_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__5_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__6_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__7_.cob: Likewise.
* cobol.dg/group2/Numeric_operations__8_.cob: Likewise.
* cobol.dg/group2/OCCURS_clause_with_1_entry.cob: Likewise.
* cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob: Likewise.
* cobol.dg/group2/Occurs_DEPENDING_ON__source_and_dest.cob: Likewise.
* cobol.dg/group2/Offset_overflow.cob: Likewise.
* cobol.dg/group2/Offset_underflow.cob: Likewise.
* cobol.dg/group2/Overlapping_MOVE.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_arithmetic.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_basic_comp-3_comp-6__1_.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_basic_comp-3_comp-6__2_.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_dump.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_numeric_test__1_.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_numeric_test__2_.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_used_with_DISPLAY.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_used_with_INITIALIZE.cob: Likewise.
* cobol.dg/group2/PACKED-DECIMAL_used_with_MOVE.cob: Likewise.
* cobol.dg/group2/PERFORM_..._CONTINUE.cob: Likewise.
* cobol.dg/group2/PERFORM_TIMES_subscripted.cob: Likewise.
* cobol.dg/group2/PERFORM_VARYING_BY_-0.2.cob: Likewise.
* cobol.dg/group2/PERFORM_inline__1_.cob: Likewise.
* cobol.dg/group2/PERFORM_inline__2_.cob: Likewise.
* cobol.dg/group2/PERFORM_type_OSVS.cob: Likewise.
* cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob: Likewise.
* cobol.dg/group2/POINTER__display.cob: Likewise.
* cobol.dg/group2/PR39_RT3573_-_Parser_issue_w_concat._source_lines.cob: Likewise.
* cobol.dg/group2/Preserve_collation_past_a_CALL.cob: Likewise.
* cobol.dg/group2/Program-to-program_parameters_and_retvals.cob: Likewise.
* cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob: Likewise.
* cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob: Likewise.
* cobol.dg/group2/REDEFINES__chained.cob: Likewise.
* cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob: Likewise.
* cobol.dg/group2/RETURN-CODE_moving.cob: Likewise.
* cobol.dg/group2/RETURN-CODE_nested.cob: Likewise.
* cobol.dg/group2/RETURN-CODE_with_INITIAL_and_RECURSIVE.cob: Likewise.
* cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob: Likewise.
* cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob: Likewise.
* cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob: Likewise.
* cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob: Likewise.
* cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob: Likewise.
* cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob: Likewise.
* cobol.dg/group2/ROUNDED_TRUNCATION.cob: Likewise.
* cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob: Likewise.
* cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob: Likewise.
* cobol.dg/group2/Recursive_FUNCTION_with_local-storage.cob: Likewise.
* cobol.dg/group2/Recursive_PERFORM_paragraph.cob: Likewise.
* cobol.dg/group2/Recursive_subscripts.cob: Likewise.
* cobol.dg/group2/Refmod__comparisons_inside_numeric-display.cob: Likewise.
* cobol.dg/group2/Refmod_sources_are_figurative_constants.cob: Likewise.
* cobol.dg/group2/Repository_functions_clause.cob: Likewise.
* cobol.dg/group2/Rounding_from_BINARY_signable_and_negative.cob: Likewise.
* cobol.dg/group2/Rounding_from_BINARY_signable_and_positive.cob: Likewise.
* cobol.dg/group2/Rounding_from_BINARY_unsignable.cob: Likewise.
* cobol.dg/group2/SEARCH_ALL_with_OCCURS_DEPENDING_ON.cob: Likewise.
* cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob: Likewise.
* cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob: Likewise.
* cobol.dg/group2/SORT__table_sort.cob: Likewise.
* cobol.dg/group2/SORT__table_sort__2___ASCII_.cob: Likewise.
* cobol.dg/group2/SORT__table_sort__2___EBCDIC_.cob: Likewise.
* cobol.dg/group2/SORT__table_sort__3A_.cob: Likewise.
* cobol.dg/group2/SORT__table_sort__3B_.cob: Likewise.
* cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob: Likewise.
* cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob: Likewise.
* cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob: Likewise.
* cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob: Likewise.
* cobol.dg/group2/STRING_with_subscript_reference.cob: Likewise.
* cobol.dg/group2/Sanity_check_for_ENTRY.cob: Likewise.
* cobol.dg/group2/Separate_sign_positions__1_.cob: Likewise.
* cobol.dg/group2/Separate_sign_positions__2_.cob: Likewise.
* cobol.dg/group2/Simple_COMP-X.cob: Likewise.
* cobol.dg/group2/Simple_DEBUG-ITEM.cob: Likewise.
* cobol.dg/group2/Simple_ENVIRONMENT-NAME_with_exception.cob: Likewise.
* cobol.dg/group2/Simple_TYPEDEF.cob: Likewise.
* cobol.dg/group2/Simple_floating-point_MOVE.cob: Likewise.
* cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.cob: Likewise.
* cobol.dg/group2/Simple_p-scaling.cob: Likewise.
* cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob: Likewise.
* cobol.dg/group2/Static_reference_modification.cob: Likewise.
* cobol.dg/group2/Subscript_by_arithmetic_expression.cob: Likewise.
* cobol.dg/group2/Subscript_out_of_bounds__1_.cob: Likewise.
* cobol.dg/group2/Subscript_out_of_bounds__2_.cob: Likewise.
* cobol.dg/group2/Subscripted_refmods.cob: Likewise.
* cobol.dg/group2/UDF_RETURNING_group_and_PIC_9_5_.cob: Likewise.
* cobol.dg/group2/UDF_fibonacci_recursion.cob: Likewise.
* cobol.dg/group2/UDF_in_COMPUTE.cob: Likewise.
* cobol.dg/group2/UDF_with_recursion.cob: Likewise.
* cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob: Likewise.
* cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob: Likewise.
* cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob: Likewise.
* cobol.dg/group2/UNSTRING_DELIMITER_IN.cob: Likewise.
* cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob: Likewise.
* cobol.dg/group2/UNSTRING_with_refmods.cob: Likewise.
* cobol.dg/group2/USING_COMP-3_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_COMP-3_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_FLOAT-SLX_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_FLOAT-SLX_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_NumericDisplay_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_NumericDisplay_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_Signed_-_COMP-3_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_Signed_-_NumericDisplay_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_Signed___COMP-3_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_Signed___COMP-3_BY_VALUE.cob: Likewise.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_REFERENCE.cob: Likewise.
* cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.cob: Likewise.
* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob: Likewise.
* cobol.dg/group2/add_-1_to_negative_pic_S9999.cob: Likewise.
* cobol.dg/group2/add_-1_to_pic_9999.cob: Likewise.
* cobol.dg/group2/add_-1_to_positive_pic_S9999.cob: Likewise.
* cobol.dg/group2/add_1_to_pic_9999.cob: Likewise.
* cobol.dg/group2/add_1_to_positive_pic_S9999.cob: Likewise.
* cobol.dg/group2/add__1_to_negative_pic_S9999.cob: Likewise.
* cobol.dg/group2/ambiguous_PERFORM.cob: Likewise.
* cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.cob: Likewise.
* cobol.dg/group2/command-line.cob: Likewise.
* cobol.dg/group2/compare_alpha_to_all__literal_.cob: Likewise.
* cobol.dg/group2/compare_float_to_other_types.cob: Likewise.
* cobol.dg/group2/compare_national_to_display.cob: Likewise.
* cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob: Likewise.
* cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob: Likewise.
* cobol.dg/group2/debugging_lines__not_active_.cob: Likewise.
* cobol.dg/group2/floating-point_ADD_FORMAT_1.cob: Likewise.
* cobol.dg/group2/floating-point_ADD_FORMAT_2.cob: Likewise.
* cobol.dg/group2/floating-point_DIVIDE_FORMAT_1.cob: Likewise.
* cobol.dg/group2/floating-point_DIVIDE_FORMAT_2.cob: Likewise.
* cobol.dg/group2/floating-point_FORMAT_1.cob: Likewise.
* cobol.dg/group2/floating-point_FORMAT_2.cob: Likewise.
* cobol.dg/group2/floating-point_MULTIPLY_FORMAT_1.cob: Likewise.
* cobol.dg/group2/floating-point_MULTIPLY_FORMAT_2.cob: Likewise.
* cobol.dg/group2/floating-point_SUBTRACT_FORMAT_1.cob: Likewise.
* cobol.dg/group2/floating-point_SUBTRACT_FORMAT_2.cob: Likewise.
* cobol.dg/group2/floating-point_literals.cob: Likewise.
* cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob: Likewise.
* cobol.dg/group2/length_of_ODO_Rules_7__8A__and_8B.cob: Likewise.
* cobol.dg/group2/length_of_ODO_w_-_reference_modification.cob: Likewise.
* cobol.dg/group2/move_numeric_to_alphanumeric.cob: Likewise.
* cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob: Likewise.
* cobol.dg/group2/procedure_division_using_by.cob: Likewise.
* cobol.dg/group2/refmod_with_nested_parentheses.cob: Likewise.
* cobol.dg/group2/repository.cob: Likewise.
* cobol.dg/group2/signed_unsigned_compare.cob: Likewise.
* cobol.dg/group2/skipping_at_the_top.cob: Likewise.
* cobol.dg/group2/source-computer_object-computer_repository__2_.cob: Likewise.
* cobol.dg/group2/README.txt: New file.

2 days agopasses: Make gcc buildable again with mawk <= 1.3.3
Jakub Jelinek [Mon, 20 Jul 2026 17:27:23 +0000 (19:27 +0200)] 
passes: Make gcc buildable again with mawk <= 1.3.3

On Wed, Jul 15, 2026 at 12:49:50PM -0400, Nathan Sidwell wrote:
> Fair enough, I committed this

Unfortunately it seems some versions of Debian/Ubuntu use mawk instead
of gawk by default, and mawk pretends to be POSIX compatible, but at least
versions <= 1.3.3 didn't support POSIX character classes.
We don't really need the various UTF-8 fancy blanks, and even this very
own script already uses sub(/^[ \t]*/, "", arg3); elsewhere, so this
patch just replaces [[:blank:]] with [ \t].

2026-07-20  Jakub Jelinek  <jakub@redhat.com>

* gen-pass-instances.awk: Use [ \t] instead of [[:blank:]]
for compatibility with mawk <= 1.3.3.

Reviewed-by: Richard Biener <rguenth@suse.de>
2 days agoc++: Make contract assertions have side effects [PR125904]
Ville Voutilainen [Sun, 5 Jul 2026 15:07:07 +0000 (18:07 +0300)] 
c++: Make contract assertions have side effects [PR125904]

gcc/cp/ChangeLog:
PR c++/125904
* contracts.cc (build_contract_check): Set TREE_SIDE_EFFECTS.

gcc/testsuite/ChangeLog:
PR c++/125904
* g++.dg/contracts/cpp26/pr125904.C: New test.

2 days agofortran: Use the setter to update the descriptor data field
Mikael Morin [Wed, 15 Jul 2026 15:29:38 +0000 (17:29 +0200)] 
fortran: Use the setter to update the descriptor data field

A MODIFY_EXPR was generated manually using the data reference returned by
the getter.  Just use the setter instead.  Fixed in two different places.

gcc/fortran/ChangeLog:

* trans-expr.cc (gfc_conv_class_to_class): Use the data setter
instead of generating a MODIFY_EXPR of the result of the data
getter.
* trans-intrinsic.cc (conv_intrinsic_move_alloc): Likewise.

2 days agotestsuite: cast argument to char* in can_deref_null [PR126261]
Torbjörn SVENSSON [Mon, 20 Jul 2026 15:07:07 +0000 (17:07 +0200)] 
testsuite: cast argument to char* in can_deref_null [PR126261]

gcc/testsuite/ChangeLog:

PR testsuite/126261
* lib/target-supports.exp (check_effective_target_can_deref_null):
Cast argument to char*.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2 days agoFortran, OpenMP: Consolidate iterator group start/finish code
Sandra Loosemore [Sun, 19 Jul 2026 02:49:55 +0000 (02:49 +0000)] 
Fortran, OpenMP: Consolidate iterator group start/finish code

This patch consolidates some repetitive code from gfc_trans_omp_clauses
into new functions, and adds some comments.  There are no functional
changes.

gcc/fortran/ChangeLog
* trans-openmp.cc (handle_iterator):  Add comments.  Rename
iter_block parameter to outer_block, since that's what's actually
being passed; the start/end/step expressions are outside the scope
of the iterator variables.
(start_iterator_group, finish_iterator_group): New functions,
broken out from...
(gfc_trans_omp_clauses): ...here.

2 days agoaarch64: Fix up TME deprecation warning
Alex Coplan [Fri, 17 Jul 2026 17:40:52 +0000 (18:40 +0100)] 
aarch64: Fix up TME deprecation warning

This is a follow-up patch to Richard E's r17-2498-g17f084306c68c4 (#186
on the Forge).  As Alice pointed out in her review:
https://gcc.gnu.org/pipermail/gcc-patches/2026-July/724391.html
the original patch missed things like +memtag+tme due to the string
parsing approach.  This instead just inspects the parsed feature flags
from aarch64_parse_extension to determine whether to warn in the target
attribute/pragma case.

+tme on the command line is handled as per Richard's original patch (no
change there).

gcc/ChangeLog:

* config/aarch64/aarch64.cc (aarch64_handle_attr_isa_flags):
Warn if +tme is enabled by the target attribute/pragma, relying
on the feature flags from aarch64_parse_extension.
(aarch64_process_target_attr): Drop +tme warning based on custom
string parsing.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/deprecate-tme.c: New test.

2 days agotestsuite: arm: remove xfail for MVE, NEON and thumb1 [PR124364]
Torbjörn SVENSSON [Tue, 14 Jul 2026 17:39:15 +0000 (19:39 +0200)] 
testsuite: arm: remove xfail for MVE, NEON and thumb1 [PR124364]

On MVE or NEON capable targers and thumb1 targets, I see these:

XPASS: gcc.dg/Wstringop-overflow-47.c pr97027 (test for warnings, line 72)
XPASS: gcc.dg/Wstringop-overflow-47.c pr97027 (test for warnings, line 77)
XPASS: gcc.dg/Wstringop-overflow-47.c pr97027 note (test for warnings, line 68)

gcc/testsuite/ChangeLog:

PR target/124364
* gcc.dg/Wstringop-overflow-47.c: Remove xfail.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2 days agoopenmp: Update GOMP_{distribute,loop}_static_worksharing_dispatch
Paul-Antoine Arras [Fri, 17 Jul 2026 10:40:09 +0000 (12:40 +0200)] 
openmp: Update GOMP_{distribute,loop}_static_worksharing_dispatch

Replace the 5-argument OMPT dispatch builtins and libgomp implementations
(niter, start, incr, chunk_size, istart) with a 2-argument form (start,
iterations) describing the chunk actually being dispatched, which is all the
information OMPT needs.

gcc/ChangeLog:

* builtin-types.def (BT_FN_VOID_ULONGLONG_ULONGLONG): New.
(BT_FN_VOID_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG):
Remove.
* omp-builtins.def (BUILT_IN_GOMP_LOOP_STATIC_WORKSHARING_DISPATCH,
BUILT_IN_GOMP_DISTRIBUTE_STATIC_WORKSHARING_DISPATCH): Update
signature.
* omp-expand.cc (expand_omp_for_static_nochunk): Pass chunk start
and iteration count instead of loop bounds.
(expand_omp_for_static_chunk): Likewise.

gcc/fortran/ChangeLog:

* types.def (BT_FN_VOID_ULONGLONG_ULONGLONG): New.
(BT_FN_VOID_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG):
Remove.

libgomp/ChangeLog:

* config/gcn/teams.c (GOMP_distribute_static_worksharing_dispatch):
Update signature and comment.
* config/nvptx/teams.c (GOMP_distribute_static_worksharing_dispatch):
Likewise.
* libgomp_g.h (GOMP_loop_static_worksharing_dispatch,
GOMP_distribute_static_worksharing_dispatch): Update prototypes.
* loop.c (GOMP_loop_static_worksharing_dispatch): Update signature
and comment.
* teams.c (GOMP_distribute_static_worksharing_dispatch): Likewise.
* testsuite/libgomp.c-c++-common/for-static-3.c: Update scan-dump
pattern.

gcc/testsuite/ChangeLog:

* c-c++-common/gomp/for-static-3.c: Update scan-dump pattern.

2 days agoopenmp: Add OMPT variants of GOMP_scope_start
Paul-Antoine Arras [Mon, 20 Jul 2026 09:48:59 +0000 (11:48 +0200)] 
openmp: Add OMPT variants of GOMP_scope_start

GOMP_scope_start is emitted only for task reductions without -fopenmp-ompt
(unchanged). With -fopenmp-ompt, both GOMP_scope_start_with_end and
GOMP_scope_end are emitted, whether a task reduction is specified or not.

gcc/ChangeLog:

* omp-builtins.def (BUILT_IN_GOMP_SCOPE_START_WITH_END): New
builtin.
(BUILT_IN_GOMP_SCOPE_END): Likewise.
* omp-low.cc (lower_omp_scope): Emit calls to
GOMP_scope_start_with_end and GOMP_scope_end when -fopenmp-ompt.

libgomp/ChangeLog:

* libgomp.map: Add GOMP_scope_start_with_end and GOMP_scope_end.
* libgomp_g.h (GOMP_scope_start_with_end): Declare.
(GOMP_scope_end): Likewise.
* scope.c (GOMP_scope_start_with_end): New function.
(GOMP_scope_end): New stub.

gcc/testsuite/ChangeLog:

* c-c++-common/gomp/scope-7.c: New test.
* c-c++-common/gomp/scope-8.c: New test.

2 days agotestsuite: skip test for targets that can deref null [PR126261]
Torbjörn SVENSSON [Tue, 14 Jul 2026 14:38:10 +0000 (16:38 +0200)] 
testsuite: skip test for targets that can deref null [PR126261]

As arm-none-eabi targets might have readable memory at address 0,
g++.dg/torture/pr101373.C test will "work" on some targets, while others
might tigger a fault. To avoid the ambiguity, lets skip the test if
target allows null to be dereferenced.

PR testsuite/126261

gcc/ChangeLog:

* doc/sourcebuild.texi (can_deref_null): Document.

gcc/testsuite/ChangeLog:

* g++.dg/torture/pr101373.C: Use effective-target can_deref_null.
* lib/target-supports.exp (check_effective_target_can_deref_null):
New proc.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2 days agotestsuite: arm: xfail predcom-8.c test in hard float without MVE [PR118407]
Torbjörn SVENSSON [Tue, 14 Jul 2026 08:22:06 +0000 (10:22 +0200)] 
testsuite: arm: xfail predcom-8.c test in hard float without MVE [PR118407]

In r15-6807-g68326d5d1a593d, more early break loops were vectorized.
This change causes the test to fail:

$ arm-none-eabi-gcc gcc.dg/tree-ssa/predcom-8.c \
    -mthumb -march=armv7ve+neon -mtune=cortex-a7 -mfloat-abi=hard -mfpu=auto \
    -O3 -fdump-tree-pcom-details-blocks -S -o predcom-8.s && grep "Invalid sum" predcom-8.*.pcom
;;   Invalid sum of incoming counts 267993001 (estimated locally, freq 2.3331), should be 234459439 (estimated locally, freq 2.0412)
;;   Invalid sum of incoming counts 31724316 (estimated locally, freq 0.2762), should be 78153146 (estimated locally, freq 0.6804)
;;   Invalid sum of incoming counts 37162368 (estimated locally, freq 0.3235), should be 67298542 (estimated locally, freq 0.5859)
;;   Invalid sum of incoming counts 487993506 (estimated locally, freq 4.2485), should be 471089795 (estimated locally, freq 4.1013)
;;   Invalid sum of incoming counts 140991263 (estimated locally, freq 1.2275), should be 114863531 (estimated locally, freq 1.0000)

The failures only happens for non-MVE targets in hard float ABI, thus
xfail test for these targets.

gcc/testsuite/ChangeLog:

PR testsuite/118407
* gcc.dg/tree-ssa/predcom-8.c: Xfail test for arm*-*-* in hard
float ABI without MVE.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2 days agotestsuite: arm: xfail crypto tests for -mthumb -mfloat-abi=hard [PR124043]
Torbjörn SVENSSON [Tue, 14 Jul 2026 17:08:34 +0000 (19:08 +0200)] 
testsuite: arm: xfail crypto tests for -mthumb -mfloat-abi=hard [PR124043]

In r15-1579-g792f97b44ffc5e, a new late-combine pass was introduced that
changes the generated assembler from
       ldr     r3, [sp]
       vdup.32 q8, r3
to
       vld1.32 {d16[], d17[]}, [sp]
with -mthumb -mfloat-abi=hard. Due to this changed, the check

/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */

will no longer match. Mark the test as xfail when testing with -mthumb
-mfloat-abi=hard.

gcc/testsuite/ChangeLog:

PR testsuite/124043
* gcc.target/arm/crypto-vsha1cq_u32.c: Xfail test for -mthumb
-mfloat-abi=hard.
* gcc.target/arm/crypto-vsha1h_u32.c: Likewise.
* gcc.target/arm/crypto-vsha1mq_u32.c: Likewise.
* gcc.target/arm/crypto-vsha1pq_u32.c: Likewise.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2 days ago[PATCH][RISC-V][PR target/124741] Improving atomic sequences
Shreya Munnangi [Mon, 20 Jul 2026 13:02:48 +0000 (07:02 -0600)] 
[PATCH][RISC-V][PR target/124741] Improving atomic sequences

 In PR 124741, we have a testcase:

typedef struct
{
  int x;
  unsigned repr;
} atomic_u_t;

unsigned
atomic_load_u (const atomic_u_t *a)
{
  unsigned result;
  __atomic_load (&a->repr, &result, 0);
  return result;
}

When compiled with rv64, it outputs:

addi    a5,a0,4
lw      a0,0(a5)
sext.w  a0,a0
ret

Here we have a redundant sign extension and inefficient address arithmetic.
This can be simplified into two instructions, a load and a return.

The lw insn is already doing a sign extension from 32 to 64 bits, making
the separate sext.w unnecessary. Adding a copy of the pattern that
explicitly shows the sign extension in the RTL, with the modes adjusted
accordingly, no longer emits the sext.w insn. I also generalized the pattern to
support both sign and zero extension. These changes have been reflected
on the total store ordering memory consistency model as well. As Zalrsc
doesn't support zero extending load-acquire instructions, I introduced a new
iterator, ensuring zero extend is limited to !TARGET_ZALRSC for load.

The addi and lw are combined into lw a0,4(a5) by adjusting the memory
operand constraint to handle offsets in the load patterns. The validity of
the memory operand constraint depends on the value of operand 2 - the
memory model. I introduced new constraint alternatives, such that the
behavior of the memory operand constraint is triggered on whether the
memory model acquire is being used or not and the Zalrsc or non-Zalrsc
targets accordingly. Similar changes were made for the store patterns
where the inefficient address arithmetic problem was also present.

PR target/124741

gcc/
* config/riscv/constraints.md (B1, B2, B3, B4): New constraints for
atomic loads with and without ZALASR & MEMMODEL_ACQUIRE.
* config/riscv/iterators.md (cond_extend): New iterator to for use
in extending atomic loads.
* config/riscv/sync-rvwmo.md (atomic_load_rvwmo<mode>): Adjust
contraints to enable folding small offsets into memory load.
(atomic_store_rvwmo): Likewise.
(extending atomic_load_rvwmo): New pattern.
* config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Adjust
constraints to enable folding small offsets into memory load.
(atomic_store_ztso): Likewise.
(extending atomic_load_ztso): New pattern.

gcc/testsuite/
* gcc.target/riscv/load-zalasr.c: Testcases for atomic load compiled
with rv64 and zalasr ext.
* gcc.target/riscv/load.c: Testcases for atomic load compiled with
rv64.
* gcc.target/riscv/load32-zalasr.c: Testcases for atomic load
compiled with rv32 and zalasr ext.
* gcc.target/riscv/load32.c: Testcases for atomic load compiled with
rv32.
* gcc.target/riscv/store-zalasr.c: Testcases for atomic store
compiled with rv64 and zalasr ext.
* gcc.target/riscv/store.c: Testcases for atomic store compiled
with rv64.
* gcc.target/riscv/store32-zalasr.c: Testcases for atomic store
compiled with rv32 and zalasr ext.
* gcc.target/riscv/store32.c: Testcases for atomic store compiled
with rv32.

Co-authored-by: Jeff Law <jeffrey.law@oss.qualcomm.com>
2 days agos390x: Fix singlefloat iterator.
Juergen Christ [Mon, 20 Jul 2026 08:06:11 +0000 (10:06 +0200)] 
s390x: Fix singlefloat iterator.

The VEC_SET_SINGLEFLOAT iterator erroneously included V1TF.  Remove it.

gcc/ChangeLog:

* config/s390/vector.md (VEC_SET_SINGLEFLOAT): Remove V1TF.

Signed-off-by: Juergen Christ <jchrist@linux.ibm.com>
2 days agotarget/126271 - honor v2df_reduction_prefer_haddpd better
Richard Biener [Thu, 16 Jul 2026 13:20:25 +0000 (15:20 +0200)] 
target/126271 - honor v2df_reduction_prefer_haddpd better

The following makes sure to honor v2df_reduction_prefer_haddpd
when expanding reduc_plus_scal_V2DF via ix86_expand_reduc.

There is test coverage in gcc.target/i386/pr54400.c

PR target/126271
* config/i386/i386-expand.cc (ix86_expand_reduc): Honor
TARGET_V2DF_REDUCTION_PREFER_HADDPD and expand via
gen_sse3_haddv2df3.

2 days agolibstdc++: Implement zic writezone merge optimization [PR124854]
Tomasz Kamiński [Mon, 20 Jul 2026 07:15:28 +0000 (09:15 +0200)] 
libstdc++: Implement zic writezone merge optimization [PR124854]

When two adjacent Zone lines have different total offsets and the
new line's rule set has a rule firing within jump of the boundary
(where jump = old_total - new_total > 0, i.e. local time goes
backward at the boundary), zic folds that rule into the boundary
itself: the single transition emitted has the rule's save value
already applied, so the new line begins with the post-rule save
rather than briefly using the pre-rule save and then transitioning
again moments later.

Canonical examples handled by the new merge block:
* America/Argentina/Buenos_Aires 1999-10-03: lines change
  stdoff -3 → -4 with an Argentina DST rule firing on the same
  day. Without the merge, chrono emits a 1-hour stretch of
  offset=-4 save=0 and then transitions to offset=-3 save=1;
  with the merge, the boundary itself is at offset=-3 save=1.
* Europe/Berlin 1945-05-24: lines split a rule set, with the
  So 1945-May-24 rule (save=2, "CEMT") firing at 01:00 UTC in
  the new frame, inside the 1h backward window.

Similarly, when the zone expansion algorithm is resumed after DST
span (save = 1h), we will revisit the corresponding STD transition,
for example: given offset +2h, the transition happening at 12:00
local time, will be considered twice:
 * 09:00 UT (2h + 1h) - proper ending of DST span
 * 10:00 UT (2h) - after re-entry.
Previously this transition were rejected using the (now removed)
rule_start - t < days(1) check, preventing us from emitting the one
hour STD time range followed by rest of same range. In this patch,
we reuse same merge logic, as such STD transition happens during
backward jump from boundary introduced by previous expansion.

This patch address both of the above by computing length of the
backward jump (merge_window) at the start of the expansion (regardless
if initial or re-entry), and then considering initial rule transition
happening in [info.begin + merge_window] to apply at info.begin.

libstdc++-v3/ChangeLog:

PR libstdc++/124854
* src/c++20/tzdb.cc (ZoneInfo::save): Define.
(time_zone::_M_get_sys_info): Fold initial transition if they
occurs in duplicated local time window (merge_window) due move
from DST to STD zone.
* testsuite/std/time/time_zone/wall_cascade.cc (test_next_year):
Test that 1945 Pacific/Auckland transition is properly handled.
(test_negative): Adjust test to avoid zone merge.
* testsuite/std/time/time_zone/zone_merge.cc: New test.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Co-authored-by: Álvaro Begué <alvaro.begue@gmail.com>
Signed-off-by: Álvaro Begué <alvaro.begue@gmail.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2 days agofortran: array descriptor: Add internal field accessor for data [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:10:00 +0000 (11:10 +0200)] 
fortran: array descriptor: Add internal field accessor for data [PR122521]

Add a static function producing a reference to the data field of array
descriptors, like those existing for the other fields.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (conv_descriptor_data): New function.
(gfc_conv_descriptor_data_get, gfc_conv_descriptor_data_set): Use
it.

2 days agofortran: array descriptor: Rename internal field accessor for span [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:09:46 +0000 (11:09 +0200)] 
fortran: array descriptor: Rename internal field accessor for span [PR122521]

Make the internal accessor for span respect the convention that static
functions don't have the `gfc_' prefix.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_span): Rename ...
(conv_descriptor_span): ... to this.
(gfc_conv_descriptor_span_get, gfc_conv_descriptor_span_set): Update
callers.

2 days agofortran: array descriptor: Rename dim subfields internal accessors [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:09:33 +0000 (11:09 +0200)] 
fortran: array descriptor: Rename dim subfields internal accessors [PR122521]

Drop the gfc prefix from the internal function giving access to the lbound,
ubound, and stride fields.  This aligns the function names with the rest of
the compiler dropping the prefix for static functions.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_stride): Rename ...
(conv_descriptor_stride): ... to this.
(gfc_conv_descriptor_stride_get, gfc_conv_descriptor_stride_set):
Update caller.
(gfc_conv_descriptor_lbound): Rename ...
(conv_descriptor_lbound): ... to this.
(gfc_conv_descriptor_lbound_get, gfc_conv_descriptor_lbound_set):
Update caller.
(gfc_conv_descriptor_ubound): Rename ...
(conv_descriptor_ubound): ... to this.
(gfc_conv_descriptor_ubound_get, gfc_conv_descriptor_ubound_set):
Update caller.

2 days agofortran: array descriptor: Add a setter for the token field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:09:22 +0000 (11:09 +0200)] 
fortran: array descriptor: Add a setter for the token field [PR122521]

Add a setter function to set the value of the token field of array
descriptors.

Contrary to the preceding patches touching the other fields, this one
doesn't create a getter and retains direct access to the field.  Indeed,
token is special because its address is taken and passed to library
functions to implement coarray behaviour.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_token_set): New function.
* trans-descriptor.h (gfc_conv_descriptor_token_set): New
declaration.
* trans-array.cc (gfc_conv_expr_descriptor,
gfc_conv_array_parameter, gfc_trans_deferred_array): Use
gfc_conv_descriptor_token_set to set the value of the token.
* trans-expr.cc (gfc_conv_derived_to_class,
gfc_trans_subcomponent_assign, gfc_trans_scalar_assign): Likewise.
* trans-intrinsic.cc (conv_intrinsic_move_alloc): Likewise.

2 days agofortran: array descriptor: Remove access to dim field elements [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:09:11 +0000 (11:09 +0200)] 
fortran: array descriptor: Remove access to dim field elements [PR122521]

Remove from the public API the function giving direct acces to individual
dimension descriptors.  Another function remains giving access to the full
array of dimension descriptors.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_dimension): Make static
and rename ...
(conv_descriptor_dimension): ... to this.
(gfc_conv_descriptor_subfield): Update caller.
* trans-descriptor.h (gfc_conv_descriptor_dimension): Remove
declaration.

2 days agofortran: array descriptor: Remove access to the attribute field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:09:01 +0000 (11:09 +0200)] 
fortran: array descriptor: Remove access to the attribute field [PR122521]

The attribute field is not used, this removes the single function giving
direct access to it.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_attribute): Remove
function.
* trans-descriptor.h (gfc_conv_descriptor_attribute): Remove
declaration.

2 days agofortran: array descriptor: Add accessors for the dtype field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:08:51 +0000 (11:08 +0200)] 
fortran: array descriptor: Add accessors for the dtype field [PR122521]

Use accessor functions to get or set the dtype field of array descriptors
and remove from the public API the function giving direct acces to the
field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_dtype): Make static and
rename ...
(conv_descriptor_dtype): ... to this.
(conv_descriptor_rank conv_descriptor_version,
conv_descriptor_elem_len, gfc_conv_descriptor_attribute,
conv_descriptor_type): Update callers.
(gfc_conv_descriptor_dtype_get, gfc_conv_descriptor_dtype_set):
New functions.
* trans-descriptor.h (gfc_conv_descriptor_dtype): Remove
declaration.
(gfc_conv_descriptor_dtype_get, gfc_conv_descriptor_dtype_set):
New declarations.
* trans-array.cc (gfc_trans_create_temp_array, gfc_array_init_size,
gfc_conv_expr_descriptor, gfc_resize_assumed_rank_dim_field,
gfc_conv_array_parameter, structure_alloc_comps,
gfc_alloc_allocatable_for_assignment, gfc_trans_class_array,
gfc_trans_deferred_array): Use gfc_conv_descriptor_dtype_get to get
the value of the dtype field and gfc_conv_descriptor_dtype_set to
update it.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Likewise.
* trans-expr.cc (gfc_conv_scalar_to_descriptor,
gfc_class_array_data_assign, gfc_conv_derived_to_class,
gfc_conv_class_to_class, set_dtype_for_unallocated,
gfc_trans_pointer_assignment, fcncall_realloc_result): Likewise.
* trans-intrinsic.cc (conv_isocbinding_subroutine): Likewise.
* trans-stmt.cc (trans_associate_var): Likewise.

2 days agofortran: array descriptor: Add accessors for the type field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:08:40 +0000 (11:08 +0200)] 
fortran: array descriptor: Add accessors for the type field [PR122521]

Add accessor functions to get or set the value of the type field of array
descriptors, and remove from the public API the function giving direct acces
to the field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (get_type_field): New function.
(gfc_get_descriptor_field): Use it.
(gfc_conv_descriptor_type): Make static and rename ...
(conv_descriptor_type): ... to this.
(gfc_conv_descriptor_type_get, gfc_conv_descriptor_type_set): New
functions.
* trans-descriptor.h (gfc_conv_descriptor_type): Remove declaration.
(gfc_conv_descriptor_type_get, gfc_conv_descriptor_type_set): New
declarations.
* trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Use
gfc_conv_descriptor_type_get to get the value of the type field.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Use
gfc_conv_descriptor_type_set to set the value of the type field.

2 days agofortran: array descriptor: Add accessors for the rank field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:08:29 +0000 (11:08 +0200)] 
fortran: array descriptor: Add accessors for the rank field [PR122521]

Add accessor functions to get or set the value of the rank field of array
descriptors, and remove from the public API the function giving direct acces
to the field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_rank): Make static and
rename ...
(conv_descriptor_rank): ... to this.
(gfc_conv_descriptor_rank_get, gfc_conv_descriptor_rank_set): New
functions.
* trans-descriptor.h (gfc_conv_descriptor_rank): Remove declaration.
(gfc_conv_descriptor_rank_get, gfc_conv_descriptor_rank_set): New
declarations.
* trans-array.cc (gfc_trans_create_temp_array,
gfc_conv_ss_startstride, gfc_tree_array_size,
gfc_resize_assumed_rank_dim_field, gfc_conv_array_parameter,
gfc_full_array_size, duplicate_allocatable_coarray): Use
gfc_conv_descriptor_rank_get to get the value of the rank field,
and gfc_conv_descriptor_rank_set to set it.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Likewise.
* trans-expr.cc (gfc_conv_derived_to_class, gfc_conv_variable,
gfc_conv_gfc_desc_to_cfi_desc, conv_null_actual,
gfc_trans_structure_assign): Likewise.
* trans-intrinsic.cc (gfc_conv_intrinsic_rank,
gfc_conv_intrinsic_bound, gfc_conv_intrinsic_sizeof,
gfc_conv_associated): Likewise.
* trans-openmp.cc (gfc_omp_get_array_size): Likewise.
* trans-stmt.cc (gfc_trans_select_rank_cases): Likewise.

2 days agofortran: array descriptor: Add accessors for the version field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:08:15 +0000 (11:08 +0200)] 
fortran: array descriptor: Add accessors for the version field [PR122521]

Add accessor functions to get or set the value of the version field of array
descriptors, and remove from the public API the function giving direct acces
to the field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_version): Make static and
rename ...
(conv_descriptor_version): ... to this.
(gfc_conv_descriptor_version_get, gfc_conv_descriptor_version_set):
New functions.
* trans-descriptor.h (gfc_conv_descriptor_version): Remove
declaration.
(gfc_conv_descriptor_version_get, gfc_conv_descriptor_version_set):
New declarations.
* trans.cc (gfc_deallocate_with_status): Use
gfc_conv_descriptor_version_get to get the value of the version
field, and gfc_conv_descriptor_version_set to set it.
* trans-array.cc (gfc_array_allocate, structure_alloc_comps,
gfc_alloc_allocatable_for_assignment): Likewise.

2 days agofortran: array descriptor: Add accessors for the elem_len field [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:07:59 +0000 (11:07 +0200)] 
fortran: array descriptor: Add accessors for the elem_len field [PR122521]

Add accessor functions to get or set the value of the elem_len field of
array descriptors, and remove from the public API the function giving direct
acces to the field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_elem_len): Make static
and rename ...
(conv_descriptor_elem_len): ... to this.
(gfc_conv_descriptor_elem_len_get,
gfc_conv_descriptor_elem_len_set): New functions.
* trans-descriptor.h (gfc_conv_descriptor_elem_len): Remove
declaration.
(gfc_conv_descriptor_elem_len_get,
gfc_conv_descriptor_elem_len_set): New declarations.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Use
gfc_conv_descriptor_elem_len_get to get the value of the elem_len
field and gfc_conv_descriptor_elem_len_set to set it.
* trans-array.cc (gfc_array_init_size,
gfc_alloc_allocatable_for_assignment): Likewise.
* trans-expr.cc (gfc_conv_scalar_to_descriptor,
gfc_conv_gfc_desc_to_cfi_desc, gfc_trans_pointer_assignment):
Likewise.
* trans-intrinsic.cc (gfc_conv_is_contiguous_expr,
gfc_conv_intrinsic_sizeof): Likewise.
* trans-openmp.cc (gfc_omp_array_size, gfc_omp_deep_mapping_item):
Likewise.

2 days agofortran: array descriptor: Use the setter to modify the offset [PR122521]
Mikael Morin [Mon, 20 Jul 2026 09:07:41 +0000 (11:07 +0200)] 
fortran: array descriptor: Use the setter to modify the offset [PR122521]

Use the setter function to generate code modifying the array descriptor
offset and remove from the public API the function giving direct access to
that field.

PR fortran/122521

gcc/fortran/ChangeLog:

* trans-descriptor.cc (gfc_conv_descriptor_offset): Make static and
rename ...
(conv_descriptor_offset): ... to this.
(gfc_conv_descriptor_offset_get,
gfc_conv_descriptor_offset_set): Update callers.
* trans-descriptor.h (gfc_conv_descriptor_offset): Remove
declaration.
* trans-array.cc (gfc_alloc_allocatable_for_assignment): Use the
setter function to generate a modification of the array descriptor
offset.

2 days agolibstc++: Use standard FLT_EVAL_METHOD in piecewise distributions tests.
Tomasz Kamiński [Mon, 20 Jul 2026 07:10:57 +0000 (09:10 +0200)] 
libstc++: Use standard FLT_EVAL_METHOD in piecewise distributions tests.

libstdc++-v3/ChangeLog:

* testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc:
Include <cfloat> and use FLT_EVAL_METHOD instead of
__FLT_EVAL_METHOD__.
* testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc:
Likewise.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
2 days agolibsanitizer: Initialize local_head member [PR126307]
Jakub Jelinek [Mon, 20 Jul 2026 08:30:43 +0000 (10:30 +0200)] 
libsanitizer: Initialize local_head member [PR126307]

The following patch cherry picks an upstream fix for this.

2026-07-20  Jakub Jelinek  <jakub@redhat.com>

PR sanitizer/126307
* tsan/tsan_trace.h: Cherry-pick llvm-project revision
cdfdb06c9155080ec97d6e4f4dd90b6e7cefb0ca.

2 days agoFortran/OpenMP: Add parsing support for spatial dimensions
Tobias Burnus [Mon, 20 Jul 2026 07:19:04 +0000 (09:19 +0200)] 
Fortran/OpenMP: Add parsing support for spatial dimensions

Adds 'dim(...)' modifier parsing for spatial dimensions to the num_teams,
thread_limit, and num_threads clauses.

Add strict + relaxed modifier support to the thread_limit and num_threads
clauses. [For teams, the effect of strict/relaxed is provided by the
lower_bound feature.]

For num_threads, support specifying multiple values - to be applicable
for nested parallel constructs.

NOTE: All added features (but 'relaxed') will fail after parsing with
a 'sorry, unimplemented' as only the parsing support has been added and
not the actual feature.

gcc/fortran/ChangeLog:

* dump-parse-tree.cc (show_omp_clauses): Handle spatial dimension
in num_teams and it and strict/relaxed in thread_limits and
num_threads.
* trans-openmp.cc (gfc_trans_omp_clauses, gfc_split_omp_clauses,
gfc_trans_omp_target): Likewise.
* openmp.cc (gfc_free_omp_clauses, gfc_match_omp_clauses,
resolve_omp_clauses): Likewise.
(match_omp_oacc_expr_list): Return current locus for a parse
fail instead of resetting the locus.
* gfortran.h (gfc_omp_clauses): Changed gfc_expr num_threads,
num_teams_lower, num_teams_upper, and thread_limit to
gfc_expr_list num_threads_list, num_teams_list, and thread_limit_list.
Add thread_limit_strict, num_threads_strict, num_teams_dims,
thread_limit_dims, and num_threads_dims.
* frontend-passes.cc (gfc_code_walker): Update for this change.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/spatial-dimensions-1.f90: New test.
* gfortran.dg/gomp/spatial-dimensions-2.f90: New test.
* gfortran.dg/gomp/spatial-dimensions-3.f90: New test.

2 days agolibstdc++: Fix condition for stopping lazy zone expansion [PR116110]
Tomasz Kamiński [Fri, 17 Jul 2026 19:14:42 +0000 (21:14 +0200)] 
libstdc++: Fix condition for stopping lazy zone expansion [PR116110]

At indicated by the pre-existing comment, the lazy zone expansion can be
only resumed from STD (save == 0) zone. However, the current condition
for stopping on DST (save != 0) doesn't ensure that, as some rule specify
transitions between DST zones. For example August 1945 of Y rule used by
America/Dawson only change letters:
  Y 1942 o - F 9 2 1 W
  Y 1945 o - Au 14 23u 1 P

This patch correct the condition, by using next_rule (i.e. one applying
after last expanded zone): either there is no zone (last expanded range)
or it have save zero.

libstdc++-v3/ChangeLog:

PR libstdc++/116110
* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Correct
condition for stopping zone expansion before STD zone.
* testsuite/std/time/time_zone/116110.cc (test_dawson):
Add test for America/Dawson August 1945 transition.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2 days agolibstdc++: Prevent overflow in find_active_rule to_local conversion. [PR116110]
Tomasz Kamiński [Fri, 17 Jul 2026 11:21:39 +0000 (13:21 +0200)] 
libstdc++: Prevent overflow in find_active_rule to_local conversion. [PR116110]

As when member of Transitions::Entries that do not correspond
to rule activation (rule is empty) is either minimum or maximum
value of sys_seconds, adjusting it to std_offset lead to overflow
(and UB). In practice this caused next.when to have very low value,
and thus considered to be active rule. The to_local conversion now
return local_seconds constucted directly from time_since_epoch
(i.e. minimum and maximum).

In consequence above, the save was still not applied for zones
that specified UNTIL after firing of last rule, that also have
non zero save (e.g. Asia/Bishkek 2005 transition).

libstdc++-v3/ChangeLog:

PR libstdc++/116110
* src/c++20/tzdb.cc (find_active_rule::to_local): Do not
modify min/max values for rules.
* testsuite/std/time/time_zone/wall_cascade.cc: Add test
for last_transition.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2 days agoRISC-V: Adjust test case due to allow vwcvt.f.f.v overlap
Pan Li [Sun, 19 Jul 2026 09:55:49 +0000 (17:55 +0800)] 
RISC-V: Adjust test case due to allow vwcvt.f.f.v overlap

Remove the xfail due to overlap changes.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/pr112431-7.c: Remove xfail.
* gcc.target/riscv/rvv/base/pr112431-8.c: Ditto.
* gcc.target/riscv/rvv/base/pr112431-9.c: Ditto.

Signed-off-by: Pan Li <pan2.li@intel.com>
2 days agoRISC-V: Add test cases for vfwcvt.f.f.v reg overlap
Pan Li [Sun, 19 Jul 2026 09:25:21 +0000 (17:25 +0800)] 
RISC-V: Add test cases for vfwcvt.f.f.v reg overlap

Add test cases for vfwcvt.f.f.v register group overlap, please
note it is not overlap as much as possible.

Signed-off-by: Pan Li <pan2.li@intel.com>
gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-mf2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-mf4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f32-m1.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f32-m2.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f32-m4.c: New test.
* gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f32-mf2.c: New test.

Signed-off-by: Pan Li <pan2.li@intel.com>
2 days agoRISC-V: Allow RVV register overlap for vfwcvt.f.f.v
Pan Li [Sun, 19 Jul 2026 09:23:36 +0000 (17:23 +0800)] 
RISC-V: Allow RVV register overlap for vfwcvt.f.f.v

Like v[sz]ext.vf8, allow the rvv register overlap
for vfwcvt.f.f.v.

gcc/ChangeLog:

* config/riscv/vector.md: Leverage Wvr constraint.

Signed-off-by: Pan Li <pan2.li@intel.com>
2 days agomatch.pd: Make the (trunc)copysign(extend x, extend y) vector-safe [PR126291]
Philipp Tomsich [Sun, 19 Jul 2026 16:26:41 +0000 (18:26 +0200)] 
match.pd: Make the (trunc)copysign(extend x, extend y) vector-safe [PR126291]

The (convert (copysigns (convert@2 @0) (convert @1))) rules evaluate
TYPE_PRECISION on the outer and inner types after only types_match, so
a vectorized copysign chain like

  vect_1 = (vector(2) float) vect_0;
  vect_2 = (vector(2) float) vect_3;
  vect_4 = .COPYSIGN (vect_1, vect_2);
  vect_5 = (vector(2) double) vect_4;

trips the vector_type tree check while gimple_simplify evaluates the
guard (the ICE does not require the precision test to hold: evaluating
TYPE_PRECISION on a vector type is what triggers it).

Use element_precision, mirroring the abs fix.  No equivalent of the
target_supports_op_p check is needed here, since the existing
direct_internal_fn_supported_p guard already handles vector types
correctly.
The REAL_CST variant cannot match vectors (a vector constant is a
VECTOR_CST), but is converted as well for consistency.

Bootstrapped and regtested on x86_64-pc-linux-gnu.

PR tree-optimization/126291

gcc/ChangeLog:

* match.pd ((trunc)copysign ((extend)x, (extend)y) -> copysign
(x, y), (trunc)copysign ((extend)x, CST) -> copysign (x, CST)):
Use element_precision.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/pr126291-2.c: New test.

2 days agoDaily bump.
GCC Administrator [Mon, 20 Jul 2026 00:16:33 +0000 (00:16 +0000)] 
Daily bump.

3 days agomatch.pd: Make the (trunc)abs(extend x) guard vector-safe [PR126291]
Philipp Tomsich [Thu, 16 Jul 2026 04:45:03 +0000 (06:45 +0200)] 
match.pd: Make the (trunc)abs(extend x) guard vector-safe [PR126291]

The (convert (abs (convert@1 @0))) -> (abs @0) rule added by
r17-2276-ge2c4fc6b1cff evaluates TYPE_PRECISION on the outer and inner types
after only types_match, so a vectorized abs-of-narrowed chain like

  vect_1 = (vector(2) int) vect_0;
  vect_2 = ABS_EXPR <vect_1>;
  vect_3 = (vector(2) signed long) vect_2;

trips the vector_type tree check when gimple_simplify visits the
outer conversion (ICE during fre). Use element_precision
so the guard is evaluable for vectors, and require target support
for ABS on the narrow vector type before enabling the transform
there.

Bootstrapped and regtested on aarch64-unknown-linux-gnu, x86_64-pc-linux-gnu
and riscv64-unknown-linux-gnu.

PR tree-optimization/126291

gcc/ChangeLog:

* match.pd ((trunc)abs (extend x) -> abs (x)): Use
element_precision. Require target ABS support for the
vector case.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/pr126291.c: New test.