Jose E. Marchesi [Sun, 30 Nov 2025 19:42:43 +0000 (20:42 +0100)]
a68: some small a68-diagnostics.cc improvements
This commit fixes a few problems in algol68/a68-diagnostics.cc,
reported by David Malcolm in-list.
gcc/ChangeLog
* algol68/a68-diagnostics.cc (diagnostic): Copypasto "a meek"
should be "a firm". Support printing line number for programs
longer than 9 lines. Use obstack_append_str rather than
obstack_grow.
(obstack_append_str): New function.
Jose E. Marchesi [Sun, 30 Nov 2025 12:48:00 +0000 (13:48 +0100)]
fortran: testsuite: fix matching of language lists in diagnostics
A few Fortran tests that pass both Fortran and C programs in the same
compilation check for warnings like:
{ dg-warning "command-line option '-fcheck=all' is valid for Fortran but not for C" "" { target *-*-* } 0 }
The problem is that the warning may actually indicate the option is
valid for other languages other than Fortran. Like in:
warning: command-line option ‘-fcheck=all’ is valid for Algol68/Fortran but not for C
This patch modifies the regexps used in the tests in order to match
the language list strings generated by opts-global.cc:write_langs.
Tested in x86_64-linux-gnu with make check-gfortran.
gcc/testsuite/ChangeLog
PR fortran/122923
* gfortran.dg/ISO_Fortran_binding_17.f90: Recognize language
list in warning regexp.
* gfortran.dg/c-interop/allocate-errors.f90: Likewise.
* gfortran.dg/c-interop/establish-errors.f90: Likewise.
* gfortran.dg/c-interop/pr113338.f90: Likewise.
* gfortran.dg/c-interop/section-errors.f90: Likewise.
* gfortran.dg/c-interop/select-errors.f90: Likewise.
* gfortran.dg/c-interop/setpointer-errors.f90: Likewise.
Jakub Jelinek [Sun, 30 Nov 2025 14:52:27 +0000 (15:52 +0100)]
c++: Fix error recovery in cp_hide_range_decl [PR122465]
The following testcase shows that range_decl in cp_hide_range_decl is
sometimes also NULL_TREE and not just error_mark_node, and the function
IMHO should treat both the same, not try to hide anything in that case
because it doesn't know what should be hidden. This ICEs during
error recovery since something like cp_hide_range_decl has been introduced
(earlier it wasn't called that way).
The fix tweaks cp_parser_simple_declaration, such that it stores error_mark_node
instead of NULL_TREE into *maybe_range_for_decl in the erroneous cases.
2025-11-30 Jakub Jelinek <jakub@redhat.com>
PR c++/122465
* parser.cc (cp_parser_simple_declaration): Adjust function comment.
Set *maybe_range_for_decl to error_mark_node instead of keeping it
NULL_TREE in error cases or when followed by CPP_COLON.
* g++.dg/cpp0x/pr122465.C: New test.
Tamar Christina [Sun, 30 Nov 2025 07:29:50 +0000 (07:29 +0000)]
vect: support vectorization of early break forced live IVs as scalar
Consider this simple loop
long long arr[1024];
long long *f()
{
int i;
for (i = 0; i < 1024; i++)
if (arr[i] == 42)
break;
return arr + i;
}
where today we generate this at -O3:
.L2:
add v29.4s, v29.4s, v25.4s
add v28.4s, v28.4s, v26.4s
cmp x2, x1
beq .L9
.L6:
ldp q30, q31, [x1], 32
cmeq v30.2d, v30.2d, v27.2d
cmeq v31.2d, v31.2d, v27.2d
addhn v31.2s, v31.2d, v30.2d
fmov x3, d31
cbz x3, .L2
but which is highly inefficient. This loops has 3 IVs (PR119577), one normal
scalar one, two vector ones, one counting up and one counting down (PR115120)
and has a forced unrolling due to an increase in VF because of the mismatch in
modes between the IVs and the loop body (PR119860).
This patch fixed all three of these issues and we now generate:
.L2:
add w2, w2, 2
cmp w2, 1024
beq .L13
.L5:
ldr q31, [x1]
add x1, x1, 16
cmeq v31.2d, v31.2d, v30.2d
umaxp v31.4s, v31.4s, v31.4s
fmov x0, d31
cbz x0, .L2
or with sve
.L3:
add x1, x1, x3
whilelo p7.d, w1, w2
b.none .L11
.L4:
ld1d z30.d, p7/z, [x0, x1, lsl 3]
cmpeq p7.d, p7/z, z30.d, z31.d
b.none .L3
which shows that the new scalar IV is efficiently merged with the loop
control one based on IVopts.
To accomplish this the patch reworks how we handle "forced lived inductions"
with regard to vectorization.
Prior to this change when we vectorize a loop with early break any induction
variables would be forced live. Forcing live means that even though the values
aren't used inside the loop we must preserve the values such that when we start
the scalar loop we can pass the correct initial values.
However this had several side-effects:
1. We must be able to vectorize the induction.
2. The induction variable participates in VF determination. This would often
times lead to a higher VF than would have normally been needed. As such the
vector loops become less profitable.
3. IVcannon on constant loop iterations inserts a downward counting IV in
addition to the upwards one in order to support things like doloops.
Normally this duplicate IV is removed by IV opts, but IV doesn't understand
vector inductions. As such we end up with 3 IVs.
This patch fixes all three of these by choosing instead to create a new scalar
IV that's adjusted within the loop and to update all the IV statements outside
the loop by using this new IV.
We re-use vect_update_ivs_after_vectorizer for all exits now and put in a dummy
value representing the IV that is to be generated later.
To do this we delay when we call vect_update_ivs_after_vectorizer until after
the skip_epilogue edge is created and vect_update_ivs_after_vectorizer now
updates all out of loop usages of IVs and not just that in the merge edge to
the scalar loop. This not only generates better code, but negates the need to
fixup the "forced live" scalar IVs later on.
This new scalar IV is then materialized in
vect_update_ivs_after_vectorizer_for_early_breaks. When PFA using masks by
skipping iterations we now roll up the pfa IV into the new scalar IV by
adjusting the first iteration back from start - niters_peel and then take the
MAX <scal_iv, 0> to correctly handle the first iteration.
Because we are now re-using vect_update_ivs_after_vectorizer we have an issue
with UB clamping on non-linear inductions.
At the moment when doing early exit updating I just ignore the possibility of UB
since if the main exit is OK, the early exit is one iteration behind the main
one and so should be ok.
Things however get complicated with PEELED loops.
gcc/ChangeLog:
PR tree-optimization/115120
PR tree-optimization/119577
PR tree-optimization/119860
* tree-vect-loop-manip.cc (vect_can_advance_ivs_p): Check for nonlinear
mult induction and early break.
(vect_update_ivs_after_vectorizer): Support early break exits.
(vect_do_peeling): Support scalar IVs.
* tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Support early break.
(vect_update_nonlinear_iv): use `unsigned_type_for` such that function
works for both vector and scalar types.
(vectorizable_induction, vectorizable_live_operation): Remove vector
early break IV code.
(vect_update_ivs_after_vectorizer_for_early_breaks): New.
(vect_transform_loop): Support new scalar IV for early break.
* tree-vect-slp.cc (vect_analyze_slp): Remove SLP build for early break
IVs.
* tree-vect-stmts.cc (vect_stmt_relevant_p): No longer mark early break
IVs as completely unused rather than used_only_live. They no longer
contribute to the vector loop and so should not be analyzed.
(can_vectorize_live_stmts): Remove vector early vreak IV code.
* tree-vectorizer.h (LOOP_VINFO_EARLY_BRK_NITERS_VAR): New.
(class loop_vec_info): Add early_break_niters_var.
gcc/testsuite/ChangeLog:
PR tree-optimization/115120
PR tree-optimization/119577
PR tree-optimization/119860
* gcc.dg/vect/vect-early-break_39.c: Update.
* gcc.dg/vect/vect-early-break_139.c: New testcase.
* gcc.target/aarch64/sve/peel_ind_10.c: Update.
* gcc.target/aarch64/sve/peel_ind_11.c: Update.
* gcc.target/aarch64/sve/peel_ind_12.c: Update.
* gcc.target/aarch64/sve/peel_ind_5.c: Update.
* gcc.target/aarch64/sve/peel_ind_6.c: Update.
* gcc.target/aarch64/sve/peel_ind_7.c: Update.
* gcc.target/aarch64/sve/peel_ind_9.c: Update.
* gcc.target/aarch64/sve/pr119351.c
Andrew Pinski [Sun, 30 Nov 2025 03:50:53 +0000 (19:50 -0800)]
Regenerate .opt.urls
Looks like Jose forgot to one last regenerate of the opt.urls file.
Pushed as obvious after quickly looking to make sure they look decent.
gcc/ada/ChangeLog:
* gcc-interface/lang.opt.urls: Regenerate.
gcc/ChangeLog:
* algol68/lang.opt.urls: Regenerate.
gcc/c-family/ChangeLog:
* c.opt.urls: Regenerate.
gcc/cobol/ChangeLog:
* lang.opt.urls: Regenerate.
gcc/d/ChangeLog:
* lang.opt.urls: Regenerate.
gcc/fortran/ChangeLog:
* lang.opt.urls: Regenerate.
gcc/go/ChangeLog:
* lang.opt.urls: Regenerate.
gcc/m2/ChangeLog:
* lang.opt.urls: Regenerate.
gcc/rust/ChangeLog:
* lang.opt.urls: Regenerate.
Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
Jose E. Marchesi [Sat, 29 Nov 2025 15:57:51 +0000 (16:57 +0100)]
a68: build system changes
This commit adds support for building the Algol 68 front-end to the
build system.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
ChangeLog
* Makefile.def (libga68): New module.
(configure-target-libga68): Likewise.
* Makefile.tpl (GA68): Define.
(GA68_FOR_BUILD): Likewise.
(GA68FLAGS): Likewise.
* configure.ac (--enable-libga68): New option.
(--enable-algol68-gc): Likewise.
(GA68): Subst.
(GA68FLAGS): Likewise.
Invoke ACX_PROG_GA68.
* configure: Regenerate.
* Makefile.in: Likewise.
config/ChangeLog
* acx.m4 (ACX_PROG_GA68): New defun.
gcc/ChangeLog
* Makefile.in (OPT_URLS_HTML_DEPS): Add ga68/Option-Index.html.
* algol68/Make-lang.in: New file.
* algol68/config-lang.in: Likewise.
Jose E. Marchesi [Sat, 29 Nov 2025 15:54:32 +0000 (16:54 +0100)]
a68: updates to common documentation
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* doc/install.texi (Configuration): Mention algol68 option for
--enable-languages.
(Algol 68-Specific Options): New section.
* doc/sourcebuild.texi (Top Level): Add entry for libga68.
Jose E. Marchesi [Sat, 11 Oct 2025 17:43:16 +0000 (19:43 +0200)]
a68: powerpc specific support
Some code in the rs6000 port relies on parsing the language name.
This commit makes that code to recognize "GNU Algol 68".
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* config/rs6000/rs6000-logue.cc (rs6000_output_function_epilogue):
Handle "GNU Algol 68" in language_string.
Jose E. Marchesi [Sat, 11 Oct 2025 17:43:02 +0000 (19:43 +0200)]
a68: darwin specific support
This commit:
- Adapts specs in config/darwin.h for libga68.a.
- Amends section processing for non-LTO use in libibery on Darwin.
The initial implementation of the Mach-O simple object code was
mainly targeting LTO cases. The implementation was not suitable for
cases where we are just looking for a regular named section.
Signed-off-by: Iain Sandoe <iains.gcc@gmail.com>
gcc/ChangeLog
* config/darwin.h: Adapt specs for libga68.a.
libiberty/ChangeLog:
* simple-object-mach-o.c
(simple_object_mach_o_segment): Handle non-LTO sections.
Jose E. Marchesi [Sat, 11 Oct 2025 17:42:30 +0000 (19:42 +0200)]
a68: DWARF language codes
This commit makes GCC aware of the DWARF numbers recently allocated
for Algol 68.
For DWARF 5, DW_LANG_Algol68 = 0x44.
For DWARF 6, DW_LNAME_Algol68 = 0x2e
with versioning schema YYYY, starting with 1973 for the original
Revised language. The language extensions we are working on will
be encoded in subsequent versions, 2025 etc.
See https://dwarfstd.org/issues/250304.1.html for more information.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* dwarf2out.cc: Set DW_LANG_Algol68 an DW_LNAME_Algol68.
include/ChangeLog
* dwarf2.h (DW_LANG_Algol68): Define.
(DW_LNAME_Algol68): Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:42:08 +0000 (19:42 +0200)]
a68: command-line options
This commit adds a new common command-line option to the compiler
driver (-static-libga68) as well as several other front-end specific
options.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/lang.opt: New file.
* algol68/lang.opt.urls: Generate.
* common.opt: New option -static-libga68.
* common.opt.urls: Generate.
* gcc.cc: Handle OPT_static_libga68.
* regenerate-opt-urls.py (PER_LANGUAGE_OPTION_INDEXES): Add Algol68.
Jose E. Marchesi [Sat, 11 Oct 2025 17:41:38 +0000 (19:41 +0200)]
a68: documentation
This commit adds a new section to the GCC Internals Manual and also
adds two new manuals.
ga68.texi is The GNU Algol 68 Compiler user manual. It describes how
to use the compiler and all the GNU extensions implemented on top of
the Algol 68 programming language.
ga68-internals.texi is The GNU algol68 Compiler Internals manual. It
describes the implementation of the front-end and it is of interest
primarily for developers.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/ga68-internals.texi: New file.
* algol68/ga68.texi: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:40:13 +0000 (19:40 +0200)]
a68: top-level misc files
This commit updates a few administrative files in the top-level
directory.
The MAINTAINERS file is updated with new entries for the Algol 68
front-end and the libga68 run-time library.
SECURITY.txt is updated to add libga68 to the list of the other
run-time libraries.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
ChangeLog
* MAINTAINERS: Add Algol 68 subsystems.
* SECURITY.txt: add libga68 to list of libraries.
Jose E. Marchesi [Sat, 11 Oct 2025 17:58:33 +0000 (19:58 +0200)]
a68: testsuite: mcgt tests
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/testsuite/ChangeLog
* algol68/compile/mcgt-1.3b.a68: New file.
* algol68/compile/mcgt-7.1.3a-bis.a68: Likewise.
* algol68/compile/mcgt-7.1.3a.a68: Likewise.
* algol68/execute/mcgt/execute.exp: Likewise.
* algol68/execute/mcgt/mcgt-1.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-1.3c.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.2.1a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.2.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.2.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.3b.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.3c.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.3e.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.4.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.4.2b.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.4.2c.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.4.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.6a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.6b.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.7d.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.7e.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.8a.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.8b.a68: Likewise.
* algol68/execute/mcgt/mcgt-2.9.1a.a68: Likewise.
* algol68/execute/mcgt/mcgt-3.5.1a.a68: Likewise.
* algol68/execute/mcgt/mcgt-3.5d.a68: Likewise.
* algol68/execute/mcgt/mcgt-3.7.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-3.8.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-3.9.1b.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.1.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.1.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.1.6a.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.1.6b.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.1.6c.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.2.6a.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.2.6b.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.2.6d.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.3.1a.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.3.1b.a68: Likewise.
* algol68/execute/mcgt/mcgt-4.3.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-5.1.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-5.1.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-5.1.3c.a68: Likewise.
* algol68/execute/mcgt/mcgt-5.1.5a.a68: Likewise.
* algol68/execute/mcgt/mcgt-6.2.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-6.2.2b.a68: Likewise.
* algol68/execute/mcgt/mcgt-6.2.2c.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.1.1a.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.1.1b.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.1.3a.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.3.2a.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.3.6a.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.3.6b.a68: Likewise.
* algol68/execute/mcgt/mcgt-7.5.3a.a68: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:58:04 +0000 (19:58 +0200)]
a68: testsuite: revised MC Algol 68 test set
We cannot distribute the MC Test Set with GCC as of now, due to not
clear distribution terms of the stuff. Until this gets clarified with
the CWI (then Mathematical Centrum) a README.mcts file explains how to
manually fetch and install the test set.
gcc/testsuite/ChangeLog
* algol68/README.mcts: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:57:40 +0000 (19:57 +0200)]
a68: testsuite: compilation tests
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/testsuite/ChangeLog
* algol68/compile/a68includes/goodbye-supper.a68
* algol68/compile/a68includes/goodbye.a68: Likewise.
* algol68/compile/a68includes/hello-supper.a68: Likewise.
* algol68/compile/a68includes/hello.a68: Likewise.
* algol68/compile/actual-bounds-expected-1.a68: Likewise.
* algol68/compile/actual-bounds-expected-2.a68: Likewise.
* algol68/compile/actual-bounds-expected-3.a68: Likewise.
* algol68/compile/balancing-1.a68: Likewise.
* algol68/compile/bold-nestable-comment-1.a68: Likewise.
* algol68/compile/bold-taggle-1.a68: Likewise.
* algol68/compile/brief-nestable-comment-1.a68: Likewise.
* algol68/compile/brief-nestable-comment-2.a68: Likewise.
* algol68/compile/char-break-1.a68: Likewise.
* algol68/compile/compile.exp: Likewise.
* algol68/compile/conditional-clause-1.a68: Likewise.
* algol68/compile/error-bold-taggle-1.a68: Likewise.
* algol68/compile/error-coercion-1.a68: Likewise.
* algol68/compile/error-coercion-2.a68: Likewise.
* algol68/compile/error-coercion-flex-1.a68: Likewise.
* algol68/compile/error-conformance-clause-1.a68: Likewise.
* algol68/compile/error-contraction-1.a68: Likewise.
* algol68/compile/error-contraction-2.a68: Likewise.
* algol68/compile/error-incestuous-union-1.a68: Likewise.
* algol68/compile/error-label-after-decl-1.a68: Likewise.
* algol68/compile/error-nestable-comments-1.a68: Likewise.
* algol68/compile/error-nested-comment-1.a68: Likewise.
* algol68/compile/error-no-bounds-allowed-1.a68: Likewise.
* algol68/compile/error-string-break-1.a68: Likewise.
* algol68/compile/error-string-break-2.a68: Likewise.
* algol68/compile/error-string-break-3.a68: Likewise.
* algol68/compile/error-string-break-4.a68: Likewise.
* algol68/compile/error-string-break-5.a68: Likewise.
* algol68/compile/error-string-break-6.a68: Likewise.
* algol68/compile/error-string-break-7.a68: Likewise.
* algol68/compile/error-supper-1.a68: Likewise.
* algol68/compile/error-supper-2.a68: Likewise.
* algol68/compile/error-supper-3.a68: Likewise.
* algol68/compile/error-supper-4.a68: Likewise.
* algol68/compile/error-supper-5.a68: Likewise.
* algol68/compile/error-supper-6.a68: Likewise.
* algol68/compile/error-underscore-in-mode-1.a68: Likewise.
* algol68/compile/error-underscore-in-tag-1.a68: Likewise.
* algol68/compile/error-upper-1.a68: Likewise.
* algol68/compile/error-widening-1.a68: Likewise.
* algol68/compile/error-widening-2.a68: Likewise.
* algol68/compile/error-widening-3.a68: Likewise.
* algol68/compile/error-widening-4.a68: Likewise.
* algol68/compile/error-widening-5.a68: Likewise.
* algol68/compile/error-widening-6.a68: Likewise.
* algol68/compile/error-widening-7.a68: Likewise.
* algol68/compile/error-widening-8.a68: Likewise.
* algol68/compile/error-widening-9.a68: Likewise.
* algol68/compile/hidden-operators-1.a68: Likewise.
* algol68/compile/implicit-widening-1.a68: Likewise.
* algol68/compile/include-supper.a68: Likewise.
* algol68/compile/include.a68: Likewise.
* algol68/compile/labeled-unit-1.a68: Likewise.
* algol68/compile/nested-comment-1.a68: Likewise.
* algol68/compile/nested-comment-2.a68: Likewise.
* algol68/compile/operators-firmly-related.a68: Likewise.
* algol68/compile/recursive-modes-1.a68: Likewise.
* algol68/compile/recursive-modes-2.a68: Likewise.
* algol68/compile/serial-clause-jump-1.a68: Likewise.
* algol68/compile/snobol.a68: Likewise.
* algol68/compile/supper-1.a68: Likewise.
* algol68/compile/supper-10.a68: Likewise.
* algol68/compile/supper-11.a68: Likewise.
* algol68/compile/supper-12.a68: Likewise.
* algol68/compile/supper-13.a68: Likewise.
* algol68/compile/supper-2.a68: Likewise.
* algol68/compile/supper-3.a68: Likewise.
* algol68/compile/supper-4.a68: Likewise.
* algol68/compile/supper-5.a68: Likewise.
* algol68/compile/supper-6.a68: Likewise.
* algol68/compile/supper-7.a68: Likewise.
* algol68/compile/supper-8.a68: Likewise.
* algol68/compile/supper-9.a68: Likewise.
* algol68/compile/uniting-1.a68: Likewise.
* algol68/compile/upper-1.a68: Likewise.
* algol68/compile/warning-scope-1.a68: Likewise.
* algol68/compile/warning-scope-2.a68: Likewise.
* algol68/compile/warning-scope-3.a68: Likewise.
* algol68/compile/warning-scope-4.a68: Likewise.
* algol68/compile/warning-scope-5.a68: Likewise.
* algol68/compile/warning-scope-6.a68: Likewise.
* algol68/compile/warning-scope-7.a68: Likewise.
* algol68/compile/warning-voiding-1.a68: Likewise.
* algol68/compile/warning-voiding-2.a68: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:57:22 +0000 (19:57 +0200)]
a68: testsuite: execution tests 2/2
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/testsuite/ChangeLog
* algol68/execute/loop-7.a68: New file.
* algol68/execute/loop-8.a68: Likewise.
* algol68/execute/loop-9.a68: Likewise.
* algol68/execute/loop-overflow-underflow.a68: Likewise.
* algol68/execute/lt-int-1.a68: Likewise.
* algol68/execute/lt-string-stride-1.a68: Likewise.
* algol68/execute/lwb-1.a68: Likewise.
* algol68/execute/minus-int-1.a68: Likewise.
* algol68/execute/minusab-1.a68: Likewise.
* algol68/execute/minusab-2.a68: Likewise.
* algol68/execute/minusab-3.a68: Likewise.
* algol68/execute/minusab-4.a68: Likewise.
* algol68/execute/mod-int-1.a68: Likewise.
* algol68/execute/modab-1.a68: Likewise.
* algol68/execute/modab-2.a68: Likewise.
* algol68/execute/mode-indication-1.a68: Likewise.
* algol68/execute/mult-char-1.a68: Likewise.
* algol68/execute/mult-int-1.a68: Likewise.
* algol68/execute/mult-string-1.a68: Likewise.
* algol68/execute/mult-string-2.a68: Likewise.
* algol68/execute/mult-string-3.a68: Likewise.
* algol68/execute/mult-string-4.a68: Likewise.
* algol68/execute/multab-1.a68: Likewise.
* algol68/execute/multab-2.a68: Likewise.
* algol68/execute/multab-3.a68: Likewise.
* algol68/execute/mutual-recursion-1.a68: Likewise.
* algol68/execute/ne-bits-1.a68: Likewise.
* algol68/execute/ne-char-char-1.a68: Likewise.
* algol68/execute/ne-int-1.a68: Likewise.
* algol68/execute/ne-string-1.a68: Likewise.
* algol68/execute/neg-int-1.a68: Likewise.
* algol68/execute/not-bits-1.a68: Likewise.
* algol68/execute/odd-1.a68: Likewise.
* algol68/execute/op-1.a68: Likewise.
* algol68/execute/op-2.a68: Likewise.
* algol68/execute/op-3.a68: Likewise.
* algol68/execute/operator-declaration-1.a68: Likewise.
* algol68/execute/or-bits-1.a68: Likewise.
* algol68/execute/orf-1.a68: Likewise.
* algol68/execute/over-int-1.a68: Likewise.
* algol68/execute/overab-1.a68: Likewise.
* algol68/execute/overab-2.a68: Likewise.
* algol68/execute/particular-program-1.a68: Likewise.
* algol68/execute/plus-char-1.a68: Likewise.
* algol68/execute/plus-int-1.a68: Likewise.
* algol68/execute/plus-string-1.a68: Likewise.
* algol68/execute/plus-string-2.a68: Likewise.
* algol68/execute/plus-string-stride-1.a68: Likewise.
* algol68/execute/plusab-1.a68: Likewise.
* algol68/execute/plusab-2.a68: Likewise.
* algol68/execute/plusab-3.a68: Likewise.
* algol68/execute/plusab-4.a68: Likewise.
* algol68/execute/plusab-string-1.a68: Likewise.
* algol68/execute/plusto-char-1.a68: Likewise.
* algol68/execute/plusto-string-1.a68: Likewise.
* algol68/execute/posix-argc-argv-1.a68: Likewise.
* algol68/execute/posix-fopen-1.a68: Likewise.
* algol68/execute/posix-fputc-fputs-1.a68: Likewise.
* algol68/execute/posix-getenv-1.a68: Likewise.
* algol68/execute/posix-perror-1.a68: Likewise.
* algol68/execute/posix-putchar-1.a68: Likewise.
* algol68/execute/posix-stdinouterr-1.a68: Likewise.
* algol68/execute/posix-strerror-1.a68: Likewise.
* algol68/execute/posix-stride-1.a68: Likewise.
* algol68/execute/pow-int-1.a68: Likewise.
* algol68/execute/pow-real-1.a68: Likewise.
* algol68/execute/proc-1.a68: Likewise.
* algol68/execute/proc-10.a68: Likewise.
* algol68/execute/proc-12.a68: Likewise.
* algol68/execute/proc-13.a68: Likewise.
* algol68/execute/proc-14.a68: Likewise.
* algol68/execute/proc-15.a68: Likewise.
* algol68/execute/proc-16.a68: Likewise.
* algol68/execute/proc-17.a68: Likewise.
* algol68/execute/proc-18.a68: Likewise.
* algol68/execute/proc-19.a68: Likewise.
* algol68/execute/proc-2.a68: Likewise.
* algol68/execute/proc-20.a68: Likewise.
* algol68/execute/proc-21.a68: Likewise.
* algol68/execute/proc-22.a68: Likewise.
* algol68/execute/proc-23.a68: Likewise.
* algol68/execute/proc-25.a68: Likewise.
* algol68/execute/proc-26.a68: Likewise.
* algol68/execute/proc-27.a68: Likewise.
* algol68/execute/proc-28.a68: Likewise.
* algol68/execute/proc-29.a68: Likewise.
* algol68/execute/proc-3.a68: Likewise.
* algol68/execute/proc-4.a68: Likewise.
* algol68/execute/proc-5.a68: Likewise.
* algol68/execute/proc-6.a68: Likewise.
* algol68/execute/proc-7.a68: Likewise.
* algol68/execute/proc-8.a68: Likewise.
* algol68/execute/procedured-goto-1.a68: Likewise.
* algol68/execute/quine.a68: Likewise.
* algol68/execute/random-1.a68: Likewise.
* algol68/execute/re-im-1.a68: Likewise.
* algol68/execute/rela-string-1.a68: Likewise.
* algol68/execute/repr-1.a68: Likewise.
* algol68/execute/round-1.a68: Likewise.
* algol68/execute/row-display-1.a68: Likewise.
* algol68/execute/row-display-2.a68: Likewise.
* algol68/execute/row-display-3.a68: Likewise.
* algol68/execute/row-display-4.a68: Likewise.
* algol68/execute/row-display-5.a68: Likewise.
* algol68/execute/rowing-1.a68: Likewise.
* algol68/execute/rowing-10.a68: Likewise.
* algol68/execute/rowing-11.a68: Likewise.
* algol68/execute/rowing-12.a68: Likewise.
* algol68/execute/rowing-13.a68: Likewise.
* algol68/execute/rowing-2.a68: Likewise.
* algol68/execute/rowing-3.a68: Likewise.
* algol68/execute/rowing-4.a68: Likewise.
* algol68/execute/rowing-5.a68: Likewise.
* algol68/execute/rowing-6.a68: Likewise.
* algol68/execute/rowing-7.a68: Likewise.
* algol68/execute/rowing-8.a68: Likewise.
* algol68/execute/rowing-9.a68: Likewise.
* algol68/execute/selection-1.a68: Likewise.
* algol68/execute/selection-2.a68: Likewise.
* algol68/execute/selection-3.a68: Likewise.
* algol68/execute/selection-4.a68: Likewise.
* algol68/execute/selection-5.a68: Likewise.
* algol68/execute/selection-multiple-1.a68: Likewise.
* algol68/execute/selection-multiple-2.a68: Likewise.
* algol68/execute/serial-clause-1.a68: Likewise.
* algol68/execute/serial-clause-10.a68: Likewise.
* algol68/execute/serial-clause-2.a68: Likewise.
* algol68/execute/serial-clause-3.a68: Likewise.
* algol68/execute/serial-clause-4.a68: Likewise.
* algol68/execute/serial-clause-5.a68: Likewise.
* algol68/execute/serial-clause-6.a68: Likewise.
* algol68/execute/serial-clause-7.a68: Likewise.
* algol68/execute/serial-clause-8.a68: Likewise.
* algol68/execute/serial-clause-9.a68: Likewise.
* algol68/execute/serial-dsa-1.a68: Likewise.
* algol68/execute/serial-dsa-2.a68: Likewise.
* algol68/execute/serial-dsa-3.a68: Likewise.
* algol68/execute/serial-dsa-4.a68: Likewise.
* algol68/execute/serial-dsa-5.a68: Likewise.
* algol68/execute/serial-dsa-6.a68: Likewise.
* algol68/execute/sign-int-1.a68: Likewise.
* algol68/execute/sign-real-1.a68: Likewise.
* algol68/execute/sin-1.a68: Likewise.
* algol68/execute/skip-1.a68: Likewise.
* algol68/execute/skip-2.a68: Likewise.
* algol68/execute/skip-struct-1.a68: Likewise.
* algol68/execute/slice-indexing-1.a68: Likewise.
* algol68/execute/slice-indexing-2.a68: Likewise.
* algol68/execute/slice-indexing-3.a68: Likewise.
* algol68/execute/slice-indexing-4.a68: Likewise.
* algol68/execute/slice-indexing-5.a68: Likewise.
* algol68/execute/slice-indexing-6.a68: Likewise.
* algol68/execute/slice-indexing-7.a68: Likewise.
* algol68/execute/sqrt-1.a68: Likewise.
* algol68/execute/string-1.a68: Likewise.
* algol68/execute/string-2.a68: Likewise.
* algol68/execute/string-4.a68: Likewise.
* algol68/execute/string-break-1.a68: Likewise.
* algol68/execute/struct-self-1.a68: Likewise.
* algol68/execute/struct-self-2.a68: Likewise.
* algol68/execute/struct-self-3.a68: Likewise.
* algol68/execute/structure-display-1.a68: Likewise.
* algol68/execute/structure-display-2.a68: Likewise.
* algol68/execute/structure-display-3.a68: Likewise.
* algol68/execute/structure-display-4.a68: Likewise.
* algol68/execute/structure-display-5.a68: Likewise.
* algol68/execute/tan-1.a68: Likewise.
* algol68/execute/timesab-string-1.a68: Likewise.
* algol68/execute/trimmer-1.a68: Likewise.
* algol68/execute/trimmer-10.a68: Likewise.
* algol68/execute/trimmer-2.a68: Likewise.
* algol68/execute/trimmer-3.a68: Likewise.
* algol68/execute/trimmer-4.a68: Likewise.
* algol68/execute/trimmer-5.a68: Likewise.
* algol68/execute/trimmer-6.a68: Likewise.
* algol68/execute/trimmer-7.a68: Likewise.
* algol68/execute/trimmer-8.a68: Likewise.
* algol68/execute/trimmer-9.a68: Likewise.
* algol68/execute/trimmer-matrix-1.a68: Likewise.
* algol68/execute/trimmer-matrix-2.a68: Likewise.
* algol68/execute/trimmer-matrix-3.a68: Likewise.
* algol68/execute/trimmer-matrix-4.a68: Likewise.
* algol68/execute/trimmer-matrix-5.a68: Likewise.
* algol68/execute/trimmer-matrix-6.a68: Likewise.
* algol68/execute/trimmer-name-1.a68: Likewise.
* algol68/execute/undefined-1.a68: Likewise.
* algol68/execute/undefined-2.a68: Likewise.
* algol68/execute/undefined-3.a68: Likewise.
* algol68/execute/undefined-4.a68: Likewise.
* algol68/execute/undefined-5.a68: Likewise.
* algol68/execute/uniting-1.a68: Likewise.
* algol68/execute/uniting-2.a68: Likewise.
* algol68/execute/uniting-3.a68: Likewise.
* algol68/execute/uniting-4.a68: Likewise.
* algol68/execute/up-down-bits-1.a68: Likewise.
* algol68/execute/upb-1.a68: Likewise.
* algol68/execute/vacuum-1.a68: Likewise.
* algol68/execute/variable-declaration-1.a68: Likewise.
* algol68/execute/variable-declaration-2.a68: Likewise.
* algol68/execute/variable-declaration-3.a68: Likewise.
* algol68/execute/variable-declaration-4.a68: Likewise.
* algol68/execute/variable-declaration-5.a68: Likewise.
* algol68/execute/variable-declaration-6.a68: Likewise.
* algol68/execute/variable-declaration-heap-1.a68: Likewise.
* algol68/execute/variable-declaration-heap-2.a68: Likewise.
* algol68/execute/variable-declaration-multiple-1.a68: Likewise.
* algol68/execute/variable-declaration-multiple-2.a68: Likewise.
* algol68/execute/variable-declaration-multiple-3.a68: Likewise.
* algol68/execute/variable-declaration-multiple-4.a68: Likewise.
* algol68/execute/variable-declaration-multiple-5.a68: Likewise.
* algol68/execute/variable-declaration-multiple-6.a68: Likewise.
* algol68/execute/variable-declaration-multiple-7.a68: Likewise.
* algol68/execute/variable-declaration-multiple-8.a68: Likewise.
* algol68/execute/variable-declaration-multiple-9.a68: Likewise.
* algol68/execute/voiding-1.a68: Likewise.
* algol68/execute/widening-1.a68: Likewise.
* algol68/execute/widening-2.a68: Likewise.
* algol68/execute/widening-bits-1.a68: Likewise.
* algol68/execute/widening-bits-2.a68: Likewise.
* algol68/execute/widening-bits-3.a68: Likewise.
* algol68/execute/xor-bits-1.a68: Likewise.
* algol68/execute/environment-enquiries-8.a68: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:56:27 +0000 (19:56 +0200)]
a68: testsuite: execution tests 1/2
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/testsuite/ChangeLog
* algol68/execute/abs-bits-1.a68: New file.
* algol68/execute/abs-bool-1.a68: Likewise.
* algol68/execute/abs-char-1.a68: Likewise.
* algol68/execute/abs-int-1.a68: Likewise.
* algol68/execute/abs-int-negative-1.a68: Likewise.
* algol68/execute/abs-int-negative-gnu-1.a68: Likewise.
* algol68/execute/acos-1.a68: Likewise.
* algol68/execute/affirm-int-1.a68: Likewise.
* algol68/execute/and-bits-1.a68: Likewise.
* algol68/execute/andf-1.a68: Likewise.
* algol68/execute/ascription-1.a68: Likewise.
* algol68/execute/asin-1.a68: Likewise.
* algol68/execute/assert-1.a68: Likewise.
* algol68/execute/assignation-char-1.a68: Likewise.
* algol68/execute/assignation-int-1.a68: Likewise.
* algol68/execute/assignation-int-2.a68: Likewise.
* algol68/execute/assignation-int-3.a68: Likewise.
* algol68/execute/assignation-int-4.a68: Likewise.
* algol68/execute/assignation-int-5.a68: Likewise.
* algol68/execute/assignation-multiple-1.a68: Likewise.
* algol68/execute/assignation-multiple-2.a68: Likewise.
* algol68/execute/assignation-struct-1.a68: Likewise.
* algol68/execute/assignation-struct-2.a68: Likewise.
* algol68/execute/atan-1.a68: Likewise.
* algol68/execute/balancing-1.a68: Likewise.
* algol68/execute/balancing-rows-1.a68: Likewise.
* algol68/execute/bin-1.a68: Likewise.
* algol68/execute/bin-negative-1.a68: Likewise.
* algol68/execute/bin-negative-gnu-1.a68: Likewise.
* algol68/execute/boolops-1.a68: Likewise.
* algol68/execute/call-1.a68: Likewise.
* algol68/execute/call-2.a68: Likewise.
* algol68/execute/case-clause-1.a68: Likewise.
* algol68/execute/case-clause-2.a68: Likewise.
* algol68/execute/case-clause-3.a68: Likewise.
* algol68/execute/case-clause-4.a68: Likewise.
* algol68/execute/closed-clause-1.a68: Likewise.
* algol68/execute/closed-clause-2.a68: Likewise.
* algol68/execute/collateral-clause-1.a68: Likewise.
* algol68/execute/collateral-clause-2.a68: Likewise.
* algol68/execute/collateral-clause-3.a68: Likewise.
* algol68/execute/collateral-clause-4.a68: Likewise.
* algol68/execute/collateral-clause-5.a68: Likewise.
* algol68/execute/collateral-clause-6.a68: Likewise.
* algol68/execute/completer-1.a68: Likewise.
* algol68/execute/completer-10.a68: Likewise.
* algol68/execute/completer-2.a68: Likewise.
* algol68/execute/completer-3.a68: Likewise.
* algol68/execute/completer-4.a68: Likewise.
* algol68/execute/completer-5.a68: Likewise.
* algol68/execute/completer-6.a68: Likewise.
* algol68/execute/completer-7.a68: Likewise.
* algol68/execute/completer-8.a68: Likewise.
* algol68/execute/completer-9.a68: Likewise.
* algol68/execute/cond-clause-1.a68: Likewise.
* algol68/execute/cond-clause-2.a68: Likewise.
* algol68/execute/cond-clause-3.a68: Likewise.
* algol68/execute/cond-clause-4.a68: Likewise.
* algol68/execute/cond-clause-5.a68: Likewise.
* algol68/execute/cond-clause-6.a68: Likewise.
* algol68/execute/cond-clause-7.a68: Likewise.
* algol68/execute/cond-clause-8.a68: Likewise.
* algol68/execute/cond-clause-9.a68: Likewise.
* algol68/execute/conformity-clause-1.a68: Likewise.
* algol68/execute/conformity-clause-2.a68: Likewise.
* algol68/execute/conformity-clause-3.a68: Likewise.
* algol68/execute/conformity-clause-4.a68: Likewise.
* algol68/execute/conformity-clause-5.a68: Likewise.
* algol68/execute/conformity-clause-6.a68: Likewise.
* algol68/execute/conformity-clause-7.a68: Likewise.
* algol68/execute/conformity-clause-8.a68: Likewise.
* algol68/execute/conformity-clause-9.a68: Likewise.
* algol68/execute/conj-1.a68: Likewise.
* algol68/execute/cos-1.a68: Likewise.
* algol68/execute/declarer-1.a68: Likewise.
* algol68/execute/declarer-2.a68: Likewise.
* algol68/execute/deprocedure-1.a68: Likewise.
* algol68/execute/deprocedure-2.a68: Likewise.
* algol68/execute/deref-1.a68: Likewise.
* algol68/execute/deref-2.a68: Likewise.
* algol68/execute/deref-3.a68: Likewise.
* algol68/execute/deref-4.a68: Likewise.
* algol68/execute/deref-5.a68: Likewise.
* algol68/execute/deref-6.a68: Likewise.
* algol68/execute/deref-7.a68: Likewise.
* algol68/execute/deref-8.a68: Likewise.
* algol68/execute/div-int-1.a68: Likewise.
* algol68/execute/divab-real-1.a68: Likewise.
* algol68/execute/elem-bits-1.a68: Likewise.
* algol68/execute/elems-1.a68: Likewise.
* algol68/execute/elems-2.a68: Likewise.
* algol68/execute/entier-1.a68: Likewise.
* algol68/execute/environment-enquiries-1.a68: Likewise.
* algol68/execute/environment-enquiries-2.a68: Likewise.
* algol68/execute/environment-enquiries-3.a68: Likewise.
* algol68/execute/environment-enquiries-4.a68: Likewise.
* algol68/execute/environment-enquiries-5.a68: Likewise.
* algol68/execute/environment-enquiries-6.a68: Likewise.
* algol68/execute/environment-enquiries-7.a68: Likewise.
* algol68/execute/environment-enquiries-8.a68: Likewise.
* algol68/execute/eq-bits-1.a68: Likewise.
* algol68/execute/eq-char-char-1.a68: Likewise.
* algol68/execute/eq-int-1.a68: Likewise.
* algol68/execute/eq-string-1.a68: Likewise.
* algol68/execute/eq-string-stride-1.a68: Likewise.
* algol68/execute/execute.exp: Likewise.
* algol68/execute/factorial-1.a68: Likewise.
* algol68/execute/flat-assignation-1.a68: Likewise.
* algol68/execute/flat-assignation-2.a68: Likewise.
* algol68/execute/flex-1.a68: Likewise.
* algol68/execute/flex-2.a68: Likewise.
* algol68/execute/flex-3.a68: Likewise.
* algol68/execute/flex-4.a68: Likewise.
* algol68/execute/flex-5.a68: Likewise.
* algol68/execute/formula-1.a68: Likewise.
* algol68/execute/formula-2.a68: Likewise.
* algol68/execute/fsize-1.a68: Likewise.
* algol68/execute/ge-int-1.a68: Likewise.
* algol68/execute/ge-string-stride-1.a68: Likewise.
* algol68/execute/gen-flex-1.a68: Likewise.
* algol68/execute/gen-heap-1.a68: Likewise.
* algol68/execute/gen-heap-2.a68: Likewise.
* algol68/execute/gen-heap-3.a68: Likewise.
* algol68/execute/gen-heap-bool-1.a68: Likewise.
* algol68/execute/gen-heap-int-1.a68: Likewise.
* algol68/execute/gen-heap-real-1.a68: Likewise.
* algol68/execute/gen-heap-struct-1.a68: Likewise.
* algol68/execute/gen-heap-struct-2.a68: Likewise.
* algol68/execute/gen-heap-struct-3.a68: Likewise.
* algol68/execute/gen-loc-1.a68: Likewise.
* algol68/execute/gen-loc-2.a68: Likewise.
* algol68/execute/gen-loc-3.a68: Likewise.
* algol68/execute/gen-loc-4.a68: Likewise.
* algol68/execute/gen-multiple-1.a68: Likewise.
* algol68/execute/gen-union-1.a68: Likewise.
* algol68/execute/gen-union-2.a68: Likewise.
* algol68/execute/gen-union-3.a68: Likewise.
* algol68/execute/goto-1.a68: Likewise.
* algol68/execute/goto-2.a68: Likewise.
* algol68/execute/goto-3.a68: Likewise.
* algol68/execute/goto-4.a68: Likewise.
* algol68/execute/goto-5.a68: Likewise.
* algol68/execute/gt-int-1.a68: Likewise.
* algol68/execute/gt-string-stride-1.a68: Likewise.
* algol68/execute/i-1.a68: Likewise.
* algol68/execute/i-2.a68: Likewise.
* algol68/execute/identification-1.a68: Likewise.
* algol68/execute/identification-2.a68: Likewise.
* algol68/execute/identity-declaration-1.a68: Likewise.
* algol68/execute/identity-declaration-2.a68: Likewise.
* algol68/execute/identity-declaration-3.a68: Likewise.
* algol68/execute/identity-declaration-4.a68: Likewise.
* algol68/execute/identity-declaration-5.a68: Likewise.
* algol68/execute/identity-declaration-multiple-1.a68: Likewise.
* algol68/execute/identity-declaration-multiple-2.a68: Likewise.
* algol68/execute/identity-declaration-multiple-3.a68: Likewise.
* algol68/execute/identity-declaration-multiple-5.a68: Likewise.
* algol68/execute/identity-declaration-multiple-empty-1.a68: Likewise.
* algol68/execute/identity-declaration-multiple-empty-2.a68: Likewise.
* algol68/execute/identity-declaration-multiple-empty-3.a68: Likewise.
* algol68/execute/identity-declaration-multiple-empty-4.a68: Likewise.
* algol68/execute/identity-declaration-struct-1.a68: Likewise.
* algol68/execute/infinity-1.a68: Likewise.
* algol68/execute/le-ge-bits-1.a68: Likewise.
* algol68/execute/le-int-1.a68: Likewise.
* algol68/execute/le-string-stride-1.a68: Likewise.
* algol68/execute/leng-shorten-bits-1.a68: Likewise.
* algol68/execute/leng-shorten-ints-1.a68: Likewise.
* algol68/execute/leng-shorten-reals-1.a68: Likewise.
* algol68/execute/lengths-shorths-1.a68: Likewise.
* algol68/execute/lisp-1.a68: Likewise.
* algol68/execute/lisp-2.a68: Likewise.
* algol68/execute/ln-1.a68: Likewise.
* algol68/execute/log-1.a68: Likewise.
* algol68/execute/loop-1.a68: Likewise.
* algol68/execute/loop-10.a68: Likewise.
* algol68/execute/loop-11.a68: Likewise.
* algol68/execute/loop-12.a68: Likewise.
* algol68/execute/loop-13.a68: Likewise.
* algol68/execute/loop-14.a68: Likewise.
* algol68/execute/loop-2.a68: Likewise.
* algol68/execute/loop-3.a68: Likewise.
* algol68/execute/loop-4.a68: Likewise.
* algol68/execute/loop-5.a68: Likewise.
* algol68/execute/loop-6.a68: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:56:00 +0000 (19:56 +0200)]
a68: testsuite: infrastructure
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/testsuite/ChangeLog
* lib/algol68-dg.exp: New file.
* lib/algol68-torture.exp: Likewise.
* lib/algol68.exp: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:55:39 +0000 (19:55 +0200)]
a68: libga68: build system (generated files)
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
ChangeLog
* libga68/config.h.in: Regenerate.
* libga68/configure: Likewise.
* libga68/Makefile.in: Likewise.
* libga68/aclocal.m4: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:55:19 +0000 (19:55 +0200)]
a68: libga68: build system
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
ChangeLog
* libga68/Makefile.am: New file.
* libga68/configure.ac: Likewise.
* libga68/Makefile.in: Generate.
* libga68/aclocal.m4: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:54:57 +0000 (19:54 +0200)]
a68: libga68: sources, spec and misc files
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
ChangeLog
* libga68/README: New file.
* libga68/ga68-alloc.c: Likewise.
* libga68/ga68-error.c: Likewise.
* libga68/ga68-posix.c: Likewise.
* libga68/ga68-standenv.c: Likewise.
* libga68/ga68-unistr.c: Likewise.
* libga68/ga68.h: Likewise.
* libga68/libga68.c: Likewise.
* libga68/libga68.spec.in: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:54:37 +0000 (19:54 +0200)]
a68: low: modes
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-moids.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:54:10 +0000 (19:54 +0200)]
a68: low: units and coercions
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-coercions.cc: New file.
* algol68/a68-low-generator.cc: Likewise.
* algol68/a68-low-units.cc: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:53:49 +0000 (19:53 +0200)]
a68: low: ranges
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-ranges.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:53:33 +0000 (19:53 +0200)]
a68: low: builtins
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-builtins.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:53:12 +0000 (19:53 +0200)]
a68: low: runtime
Libcalls for operations implemented in the run-time environment.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-runtime.cc: New file.
* algol68/a68-low-runtime.def: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:52:52 +0000 (19:52 +0200)]
a68: low: clauses and declarations
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-clauses.cc: New file.
* algol68/a68-low-decls.cc: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:52:33 +0000 (19:52 +0200)]
a68: low: standard prelude
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-posix.cc: New file.
* algol68/a68-low-prelude.cc: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:52:14 +0000 (19:52 +0200)]
a68: low: stowed values
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-multiples.cc: New file.
* algol68/a68-low-structs.cc: Likewise.
* algol68/a68-low-unions.cc: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:51:55 +0000 (19:51 +0200)]
a68: low: plain values
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low-bits.cc: New file.
* algol68/a68-low-bools.cc: Likewise.
* algol68/a68-low-chars.cc: Likewise.
* algol68/a68-low-complex.cc: Likewise.
* algol68/a68-low-ints.cc: Likewise.
* algol68/a68-low-procs.cc: Likewise.
* algol68/a68-low-reals.cc: Likewise.
* algol68/a68-low-refs.cc: Likewise.
* algol68/a68-low-strings.cc: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:51:29 +0000 (19:51 +0200)]
a68: low: lowering entry point and misc handlers
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-low.cc: New file.
* algol68/a68-low-misc.cc: Likewise.
Jose E. Marchesi [Sat, 22 Nov 2025 01:19:52 +0000 (02:19 +0100)]
a68: parser: pragmats infrastructure
This patch adds the infrastructure for adding handlers for pragmats,
along with some intial support for the "access Module" pragmat.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-parser-pragmat.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:50:49 +0000 (19:50 +0200)]
a68: parser: dynamic stack usage in serial clauses
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-parser-serial-dsa.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:50:32 +0000 (19:50 +0200)]
a68: parser: extraction of tags from phrases
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:50:12 +0000 (19:50 +0200)]
a68: parser: debug facilities
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-parser-debug.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:49:55 +0000 (19:49 +0200)]
a68: parser: static scope checker
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:49:38 +0000 (19:49 +0200)]
a68: parser: symbol table management
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:49:23 +0000 (19:49 +0200)]
a68: parser: parsing of modes
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:48:58 +0000 (19:48 +0200)]
a68: parser: standard prelude definitions
Definitions of standard identifiers, procedures and modes.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:48:35 +0000 (19:48 +0200)]
a68: parser: syntax check for declarers
Thi pass checks the syntax of formal, actual and virtual declarers.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:48:18 +0000 (19:48 +0200)]
a68: parser: bottom-up parser
Bottom-up parser for the Algol 68 front-end.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:47:56 +0000 (19:47 +0200)]
a68: parser: parenthesis checker
This pass makes sure all brackets (parenthesis) are matched in the
source program.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:47:34 +0000 (19:47 +0200)]
a68: parser: top-down parser
Top-down parser for the Algol 68 front-end.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:47:15 +0000 (19:47 +0200)]
a68: parser: keyword tables management
This commit adds code to manage the table of keywords (bold words) in
the Algol 68 front-end.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:46:56 +0000 (19:46 +0200)]
a68: parser: scanner
Lexer for the Algol 68 front-end.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 11 Oct 2025 17:46:33 +0000 (19:46 +0200)]
a68: parser: AST nodes attributes/types
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-parser-attrs.def: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:46:09 +0000 (19:46 +0200)]
a68: parser: entry point
This commit adds the parsing support code and the entry point to the
parser.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
Jose E. Marchesi [Sat, 22 Nov 2025 01:19:31 +0000 (02:19 +0100)]
a68: modules imports
This patch adds support for importing module interfaces, read from
object files, shared objects, archives or stand-alone files.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-imports.cc: New file.
Jose E. Marchesi [Sat, 22 Nov 2025 01:19:13 +0000 (02:19 +0100)]
a68: modules exports
This commit adds the code that handles the exports information for the
module definitions in prelude packets. The exports info is generated
in a section in the output object file.
A precise description of the binary format in which the exports are
encoded is expressed in an included GNU poke pickle ga68-exports.pk.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-exports.cc: New file.
* algol68/ga68-exports.pk: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:45:45 +0000 (19:45 +0200)]
a68: front-end diagnostics
This commit adds the diagnostics infrastructure for the Algol 68
front-end.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
gcc/ChangeLog
* algol68/a68-diagnostics.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:45:27 +0000 (19:45 +0200)]
a68: unicode support routines
This commit adds several utility functions to deal with Unicode
strings.
These functions have been adapted from the libunistring gnulib module.
gcc/ChangeLog
* algol68/a68-unistr.c: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:45:09 +0000 (19:45 +0200)]
a68: a681 compiler proper
This commit adds the language hooks and the target hooks for the Algol
68 front-end, which implement the a681 compiler proper.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/a68-lang.cc: New file.
Jose E. Marchesi [Sat, 11 Oct 2025 17:44:39 +0000 (19:44 +0200)]
a68: ga68 compiler driver
This commit adds the main sources for the ga68 compiler driver.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog:
* algol68/a68spec.cc: New file.
* algol68/lang-specs.h: Likewise.
Jose E. Marchesi [Sat, 11 Oct 2025 17:43:37 +0000 (19:43 +0200)]
a68: gcc/algol68 misc files
README contains a description of the front-end, and brief instructions
for developers.
At the moment the front-end doesn't define any custom tree node, as of
yet. gcc/algol68/a68-tree.def is a placeholder where to have these
node codes.
a68-types.h and a68.h are the main header files used by the front-end.
Together they provide data definitions and prototypes of functions
defined in the .cc files.
ga68.vw contains a revised-report like formal description of the
language implemented by this compiler. This includes GNU extensions.
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/ChangeLog
* algol68/README: New file.
* algol68/a68-tree.def: Likewise.
* algol68/a68-types.h: Likewise.
* algol68/a68.h: Likewise.
* algol68/ga68.vw: Likewise.
GCC Administrator [Sun, 30 Nov 2025 00:16:27 +0000 (00:16 +0000)]
Daily bump.
Nathaniel Shead [Sat, 15 Nov 2025 04:27:13 +0000 (15:27 +1100)]
c++: Support template block-scope OpenMP user-defined reductions in modules [PR119864]
There were two issues preventing OpenMP reductions of UDTs from working
in modules.
Firstly, we were failing a number of checking asserts in the streaming
logic because the declaration is a DECL_LOCAL_DECL_P but was not
correctly added to the BLOCK of the function template. This is because
cp_parser_omp_declare_reduction only called pushdecl when
!processing_template_decl; correcting this fixed this issue.
The second issue is that modules saw this as a function definition and
so attempted to call allocate_struct_function on it, which crashes.
Given that these reduction functions don't really behave like real
function definitions in any other way, I think the cleanest solution is
to just skip all the function definition post-processing in modules;
this seems to work to get the test functioning correctly, from what I
can see.
PR c++/119864
gcc/cp/ChangeLog:
* module.cc (trees_in::read_function_def): Don't call
post_process on OpenMP UDT reductions.
* parser.cc (cp_parser_omp_declare_reduction): Call push_decl
for block_scope, even when processing_template_decl.
gcc/testsuite/ChangeLog:
* g++.dg/modules/omp-4_a.C: New test.
* g++.dg/modules/omp-4_b.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Reviewed-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
Eczbek [Tue, 25 Nov 2025 05:26:50 +0000 (00:26 -0500)]
c++: Allow lambda expressions in template type parameters [PR116952]
PR c++/116952
gcc/cp/ChangeLog:
* parser.cc (cp_parser_lambda_expression): Revert
r11-8166-ge1666ebd9ad31d change prohibiting lambda in non-type
parameter.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/lambda-uneval14.C: Revise incorrect test.
* g++.dg/cpp2a/lambda-uneval29.C: New test.
Co-authored-by: Jason Merrill <jason@redhat.com>
Jakub Jelinek [Sat, 29 Nov 2025 16:37:58 +0000 (17:37 +0100)]
c++: Limit P2795R5 handling of jumps across vacuous inits to !processing_template_decl [PR122758]
The extra handling of jumps across vacuous inits for -std=c++26
or -ftrivial-auto-var-init={zero,pattern} added for P2795R5 is undesirable
when processing_template_decl, because it creates labels without DECL_NAME
and GOTO_EXPRs to those and those can't be tsubsted.
I was afraid the pop_labels and check_goto_1 and check_previous_goto_1
handling might not happen again during instantiation, but clearly it does
happen fully (and has to, because whether some declaration has vacuous
initialization or not can't be decided in some cases when parsing the
template, if dependent types are involved).
So, this patch just restricts the P2795R5 PR114457 r16-4212 changes
to !processing_template_decl and adds 2 copies of the erroneous2.C testcase,
one changing the function into a function template where nothing is
dependent and another one where most of the declarations are dependent.
2025-11-29 Jakub Jelinek <jakub@redhat.com>
PR c++/122758
* decl.cc (pop_labels): Don't call adjust_backward_gotos if
processing_template_decl.
(decl_instrument_init_bypass_p): Always return false if
processing_template_decl.
(check_goto_1): Don't push anything to direct_goto vector
if processing_template_decl.
* g++.dg/cpp26/erroneous5.C: New test.
* g++.dg/cpp26/erroneous6.C: New test.
Richard Biener [Fri, 28 Nov 2025 13:33:06 +0000 (14:33 +0100)]
Bump libgo SONAME
The following bumps the libgo SONAME to prevent PR119098 from re-appearing
for GCC 15/16.
For PR go/122802
Richard Biener [Fri, 28 Nov 2025 13:50:38 +0000 (14:50 +0100)]
Bump libgcobol SONAME
This bumps the libgcobol SONAME for GCC 16 since compared to GCC 15
there are removed symbols and key data structures have changed.
PR cobol/122803
libgcobol/
* configure.ac (LIBGCOBOL_VERSION): Bump to 2:0:0.
* configure: Re-generate.
Sandra Loosemore [Sat, 29 Nov 2025 03:17:01 +0000 (03:17 +0000)]
doc: make regenerate-opt-urls
gcc/ChangeLog
* common.opt.urls: Regenerated.
* config/aarch64/aarch64.opt.urls: Regenerated.
* config/alpha/alpha.opt.urls: Regenerated.
* config/arm/arm.opt.urls: Regenerated.
* config/avr/avr.opt.urls: Regenerated.
* config/bpf/bpf.opt.urls: Regenerated.
* config/c6x/c6x.opt.urls: Regenerated.
* config/cris/cris.opt.urls: Regenerated.
* config/cris/elf.opt.urls: Regenerated.
* config/csky/csky.opt.urls: Regenerated.
* config/darwin.opt.urls: Regenerated.
* config/epiphany/epiphany.opt.urls: Regenerated.
* config/frv/frv.opt.urls: Regenerated.
* config/ft32/ft32.opt.urls: Regenerated.
* config/gcn/gcn.opt.urls: Regenerated.
* config/i386/i386.opt.urls: Regenerated.
* config/ia64/ia64.opt.urls: Regenerated.
* config/loongarch/loongarch.opt.urls: Regenerated.
* config/m68k/m68k.opt.urls: Regenerated.
* config/microblaze/microblaze.opt.urls: Regenerated.
* config/mips/mips.opt.urls: Regenerated.
* config/mmix/mmix.opt.urls: Regenerated.
* config/or1k/or1k.opt.urls: Regenerated.
* config/pa/pa.opt.urls: Regenerated.
* config/pdp11/pdp11.opt.urls: Regenerated.
* config/rs6000/rs6000.opt.urls: Regenerated.
* config/s390/s390.opt.urls: Regenerated.
* config/sparc/sparc.opt.urls: Regenerated.
* config/v850/v850.opt.urls: Regenerated.
* config/vax/vax.opt.urls: Regenerated.
* config/visium/visium.opt.urls: Regenerated.
Sandra Loosemore [Sat, 29 Nov 2025 02:40:24 +0000 (02:40 +0000)]
doc: Fix alphabetization of FRV/FT32 option documentation sections.
The FRV and FT32 options were incorrectly alphabetized with respect to
each other in the Options Summary, the menu for the Submodel Options
section, and in the order of their respective subsections. Fixed
thusly.
gcc/ChangeLog
* doc/invoke.texi (Options Summary): Switch ordering of FRV
and FT32.
(Submodel Options): Likewise in the menu and section ordering.
Sandra Loosemore [Mon, 17 Nov 2025 15:30:15 +0000 (15:30 +0000)]
doc, linux: Clean up GNU/Linux option documentation [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi: Document -mno-android.
Sandra Loosemore [Wed, 5 Nov 2025 15:39:14 +0000 (15:39 +0000)]
doc, frv: Clean up FRV option documentation [PR122243]
frv.opt has a few options that have never been documented in the
manual. In the initial commit of the FRV port (prior to the adoption
of .opt files) they were marked as "Internal debug switch" so I have
explicitly made them "Undocumented", consistently with other options
similarly marked in the original port.
The documentation changes all straightforward here, to bring this
section into conformance with conventions being applied through this
chapter of the manual.
gcc/ChangeLog
PR other/122243
* config/frv/frv.opt (mbranch-cost=): Mark as Undocumented.
(mcond-exec-insns=): Likewise.
(mcond-exec-tempss=): Likewise.
* doc/invoke.texi (Option Summary) <FRV Options>: Remove duplicate
positive/negative forms from the list.
(FRV Options): Combine documentation of positive/negative forms
where they were listed separately. Add @opindex entries for
negative forms.
Sandra Loosemore [Mon, 17 Nov 2025 00:00:18 +0000 (00:00 +0000)]
doc, ft32: Clean up FT32 options and documentation [PR122243]
gcc/ChangeLog
PR other/122243
* config/ft32/ft32.opt (mlra): Mark obsolete option as Undocumented.
* doc/invoke.texi (Option Summary) <FT32 Options>: Remove -mlra.
(FT32 Options): Likewise. Add @opindex entries for negative
option forms.
Sandra Loosemore [Sun, 16 Nov 2025 23:11:33 +0000 (23:11 +0000)]
doc, fr30: Clean up FR30 option documentation [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (FR30 Options): Add @opindex for -mno-small-model.
Sandra Loosemore [Wed, 5 Nov 2025 15:38:11 +0000 (15:38 +0000)]
doc, bpf: Clean up eBPF option documentation [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (Option Summary) <eBPF Options>: Fix formatting
issues. Remove redundant entry for -mno-co-re.
(eBPF Options): Add missing @opindex entries. Combine documentation
for -mco-re and -mno-co-re.
Sandra Loosemore [Tue, 18 Nov 2025 14:41:33 +0000 (14:41 +0000)]
doc, alpha: Document missing alpha options [PR122243]
gcc/ChangeLog
PR other/122243
* config/alpha/alpha.opt (mgas): Mark as Undocumented.
* doc/invoke.texi (Option Summary) <DEC Alpha Options>: Add
-mtls-kernel, -mtls-size=, -mlong-double-128, and -mlong-double-64.
(DEC Alpha Options): Likewise.
Sandra Loosemore [Tue, 18 Nov 2025 23:34:09 +0000 (23:34 +0000)]
doc, darwin: Clean up Darwin options and documentation [PR122243]
The Darwin target options documentation was a bit of a mess, with several
undocumented options, some that were listed in the option summary or mentioned
in discussion of other options but not actually documented, and a large
number of options listed in darwin.opt as being obsolete.
I've undocumented all the obsolete options to streamline things, plus a few
others that seem to have been intentially undocumented or supplanted by
other options. For the others that were probably supposed to documented,
I did my best to guess what they're for by reading the code or just
copying the documentation string in the .opt file, but it's certainly
possible I screwed some up.
gcc/ChangeLog
PR other/122243
* config/darwin.opt (findirect-virtual-calls): Mark as Undocumented.
(fterminated-vtables): Likewise.
(multi_module): Likewise.
(multiply_defined): Likewise.
(multiply_defined_unused): Likewise.
(no_dead_strip_inits_and_terms): Likewise.
(noprefixbinding): Likewise.
(nomultidefs): Likewise.
(noprebind): Likewise.
(noseglinkedit): Likewise.
(ObjC, ObjC++): Add documentation strings.
(object): Mark as Undocumented.
(prebind): Likewise.
(prebind_all_twolevel_modules): Likewise.
(private_bundle): Likewise.
(sectobjectsymbols): Likewise.
(sectorder): Likewise.
(seg_addr_table_filename): Likewise.
(segcreate): Likewise.
(seglinkedit): Likewise.
(single_module): Likewise.
(X): Likewise.
(y): Likewise.
(Mach): Likewise.
* doc/invoke.texi (Option Summary) <Darwin Options>: Improve
alphabetization of the list. Remove obsolete/undocumented
options and add missing entries.
(Darwin Options): Add documentation for -arch, -dependency-file,
-fapple-kext, -matt-stubs, -fconstant-cfstrings, -mdynamic-no-pic,
-asm_macosx_version_min, -msymbol-stubs, -mtarget-linker,
-ObjC, -ObjC++, -Wnonportable-cfstrings. Update the list
of options passed to the linker to remove obsolete options
and add missing ones; also move the block of @opindex entries
before the list items instead of putting it in the middle.
Sandra Loosemore [Tue, 18 Nov 2025 05:01:02 +0000 (05:01 +0000)]
doc, mingw: Clean up Cygwin and MinGW option documentation [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (Option Summary) <Cygwin and MinGW Options>:
Correct spelling of -mthreads and add missing options.
(Cygwin and MinGW Options): Add @opindex for negative forms.
Sandra Loosemore [Wed, 5 Nov 2025 20:54:16 +0000 (20:54 +0000)]
doc, csky: C-SKY option documentation cleanup [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (Option Summary) <C-SKY Options>: Remove
entries for "Undocumented" options -EB, -EL, -mhard-float,
-msoft-float, and nonexistent option -mcse-cc.
(C-SKY Options): Likewise. Also remove references to "Undocumented"
option -mstm and uniformly index/document the -mno- forms for
consistency with other options in this section that already do so.
Sandra Loosemore [Wed, 5 Nov 2025 15:37:48 +0000 (15:37 +0000)]
doc, cris: Clean up CRIS option documentation [PR122243]
This is another patch in the series to make documentation of
target-specific options in invoke.texi match what is in the
corresponding .opt files.
The cris.opt file is a bit strange, with many cases where negative
forms are listed explicitly as separate options from the positive
forms, with both having "RejectNegative" and one (typically the form
that is the default) being marked as "Undocumented". I've left that
alone since fixing it to the more normal style of having a single
option setting a boolean flag would require code changes, and I'm not
set up to build or test this target.
Beyond that, the "Undocumented" status of options in the .opt file did
not in several cases match what was actually documented in the manual.
I've generally assumed that the manual is correct, and e.g. the
-m32-bit, -m16-bit, and -m8-bit options, all previously marked
"Undocumented" but listed in invoke.texi, are preferred to the
equivalent options without the hyphen. I've removed the references to
the obsolete -melf and -maout options and added documentation in the
manual for some options that were previously documented only in the .opt
file.
gcc/ChangeLog
PR other/122243
* config/cris/cris.opt (m32-bit, m16-bit, m8-bit): Remove
Undocumented property.
(m32bit, m8bit): Add Undocumented property.
* doc/invoke.texi (Option Summary) <CRIS Options>: Remove
obsolete -melf and -maout options from table, plus redundant
-mno-mul-bug-workaround.
(CRIS Options): Add @opindex for -mno- forms that didn't already
have one. Remove obsolete -melf documentation. Document
-mbest-lib-options, -moverride-best-lib-options,
-mtrap-using-break8, -mtrap-unaligned-atomic, and
-munaligned-atomic-may-use-library.
Sandra Loosemore [Sun, 16 Nov 2025 16:10:30 +0000 (16:10 +0000)]
doc, c6x: Document missing C6X options [PR122243]
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (Option Summary) <C6X Options>: Add -mdbst
and -mlong-calls.
(C6X Options): Likewise.
Sandra Loosemore [Sun, 2 Nov 2025 16:58:19 +0000 (16:58 +0000)]
doc, blackfin: Don't separately document no- form of Blackfin options [PR122243]
The documentation for Blackfin options had separate entries for the
positive and negative forms of many options, both in the Option Summary
and detailed documentation. This is unnecessarily verbose and counter
to the general rule that only one form of each option is documented.
gcc/ChangeLog
PR other/122243
* doc/invoke.texi (Option Summary) <Blackfin Options>:
Remove redundant -mno- entries.
(Blackfin Options): Combine explicit -mno-* documentation
with that for the corresponding positive form of the option.
Add @opindex entries for the negative forms of options that
didn't already have one.
Sandra Loosemore [Thu, 6 Nov 2025 23:37:46 +0000 (23:37 +0000)]
doc, arm: Clean up ARM option documentation [PR122243]
This patch undocuments ARM target-specific options that have never
been implemented, are already marked as "Undocumented" in arm.opt
file, and/or are presently documented as obsolete or only useful for
back end debugging. I've also cleaned up the option summary to list
only one of the positive or negative forms of each option, and to
consistently index both forms.
gcc/ChangeLog
PR other/122243
* config/arm/arm.opt (mapcs-reentrant): Mark as "Undocumented",
updatehelp string for internal documentation.
(mapcs-stack-check): Likewise update help string.
(mprint-tune-info, mneon-for-64bits): Mark as "Undocumented".
* doc/invoke.texi (Option Summary) <ARM Options>: Remove duplicate
entries for negative forms and entries for options that are
explicitly "Undocumented". Add missing entry for
-mpic-data-is-text-relative. Fix some formatting issues.
(ARM Options): Remove documentation for -mapcs-stack-check,
-mapcs-reentrant, -mflip-thumb, -mneon-for-64-bits,
-mprint-tune-info, and -mverbose-cost-dump. Add index entries
for -mno- option forms. Minor editing for clarity.
Sandra Loosemore [Sat, 1 Nov 2025 22:57:01 +0000 (22:57 +0000)]
doc, gcn: Clean up gcn target options and docs [PR122243] [PR122288]
Per PR target/122288, gcn.opt contained some invalid syntax that was
quietly accepted by the options processor. This patch fixes that,
marks some useless options as "Undocumented", and brings the
documentation into sync with the options file.
I tested the .opt file changes on both a standalone gcn build (gcc and
g++ testsuites) and in an x86_64-linux-gnu build with gcn as offload
target (libgomp).
gcc/ChangeLog
PR other/122243
PR target/122288
* config/gcn/gcn.opt (m32, m64, mgomp): Mark "Undocumented"
since these options don't actually do anything useful.
(flag_bypass_init_error, stack_size_opt, gang_size_opt): Correct
opt file syntax.
(mstack-size=): Mark "Undocumented" since it's obsolete.
* doc/invoke.texi (Option Summary) <AMD GCN Options>:
Remove obsolete options, add missing entries for
-mgang-private-size=, -msram-ecc=, and -mxnack=.
(AMD GCN Options): Likewise.
Sandra Loosemore [Sat, 1 Nov 2025 20:35:12 +0000 (20:35 +0000)]
doc, epiphany: Clean up epiphany target options and docs [PR122243]
gcc/ChangeLog
PR other/122243
* config/epiphany/epiphany.opt (mlong-calls): Make it do something
useful.
(may-round-for-trunc): Make this undocumented option with a weird
name an alias for -mmay-round-for-trunc.
(mfp-iarith): Fix doc string.
* doc/invoke.texi (Option Summary) <Adapteva Epiphany Options>:
Add missing options.
(Adapteva Epiphany Options): Document negative forms also when
that is not the default, or where it's unclear. Document
-may-round-for-trunc and -mfp-iarith. Fix spelling of
-mpost-inc and -mpost-modify.
Sandra Loosemore [Thu, 6 Nov 2025 23:34:58 +0000 (23:34 +0000)]
doc, aarch64: Clean up aarch64 options and documentation [PR122243]
gcc/ChangeLog
PR other/122243
* config/aarch64/aarch64.opt (Wexperimental-fmv-target): Mark
as "Undocumented".
* doc/invoke.texi (Option Summary) <AArch64 Options>: Don't
list "Undocumented" aarch64 options -mverbose-cost-dump or
-Wexperimental-fmv-target, or both positive and negative forms
of other options. Add missing options. Fix whitespace problems.
(AArch64 Options): Light copy-editing. Add missing @opindex
entries to match the documented options. Undocument
-mverbose-cost-dump and -Wexperimental-fmv-target.
GCC Administrator [Sat, 29 Nov 2025 00:16:27 +0000 (00:16 +0000)]
Daily bump.
Jakub Jelinek [Fri, 28 Nov 2025 21:06:30 +0000 (22:06 +0100)]
analyzer: Fix 3 C++20 warnings in analyzer
I've noticed
../../gcc/analyzer/known-function-manager.cc:86:33: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
../../gcc/analyzer/known-function-manager.cc:87:26: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
../../gcc/analyzer/known-function-manager.cc:140:33: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
warnings. Fixed thusly.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* known-function-manager.cc (known_function_manager::add): Avoid
arithmetics between enumerators from different enum types.
(known_function_manager::get_internal_fn): Likewise.
Jakub Jelinek [Fri, 28 Nov 2025 21:05:34 +0000 (22:05 +0100)]
powerpc: PowerPC backend, meet C++20
C++20, in particular https://wg21.link/P1120R0 paper voted into it,
deprecates various operations between enumerators from different enumeration
types etc., and as we've switched to -std=gnu++20 by default, this now
results in warnings or errors during stage2 and onwards.
The following patch should fix rs6000 build.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.cc (complex_multiply_builtin_code):
Avoid arithmetics between enumerators from different enum types.
(complex_divide_builtin_code): Likewise.
Jakub Jelinek [Fri, 28 Nov 2025 21:04:57 +0000 (22:04 +0100)]
loongarch: LoongArch backend, meet C++20
C++20, in particular https://wg21.link/P1120R0 paper voted into it,
deprecates various operations between enumerators from different enumeration
types etc., and as we've switched to -std=gnu++20 by default, this now
results in warnings or errors during stage2 and onwards.
The following patch should fix loongarch build.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* config/loongarch/loongarch.cc (loongarch_unspec_address_offset):
Avoid arithmetics between enumerators from different enum types.
(loongarch_call_tls_get_addr): Likewise.
Jakub Jelinek [Fri, 28 Nov 2025 21:04:25 +0000 (22:04 +0100)]
mips: MIPS backend, meet C++20
C++20, in particular https://wg21.link/P1120R0 paper voted into it,
deprecates various operations between enumerators from different enumeration
types etc., and as we've switched to -std=gnu++20 by default, this now
results in warnings or errors during stage2 and onwards.
The following patch should fix mips build.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* config/mips/mips.cc (mips_unspec_address_offset): Avoid
arithmetics between enumerators from different enum types.
Jakub Jelinek [Fri, 28 Nov 2025 21:03:19 +0000 (22:03 +0100)]
riscv: RISCV backend, meet C++20
C++20, in particular https://wg21.link/P1120R0 paper voted into it,
deprecates various operations between enumerators from different enumeration
types etc., and as we've switched to -std=gnu++20 by default, this now
results in warnings or errors during stage2 and onwards.
The following patch should fix riscv build.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* config/riscv/riscv-v.cc (expand_const_vector_onestep): Avoid
bitwise ops between enumerators from different enum types.
(emit_vec_cvt_x_f): Likewise.
(emit_vec_cvt_x_f_rtz): Likewise.
* config/riscv/riscv.cc (riscv_unspec_address_offset): Avoid
arithmetics between enumerators from different enum types.
Sam James [Fri, 28 Nov 2025 20:53:43 +0000 (20:53 +0000)]
gcc: fix typo in comment
Just testing pushing after sw migration.
gcc/ChangeLog:
* crc-verification.cc (crc_symbolic_execution::is_used_outside_the_loop):
Fix 'assignment' typo.
Patrick Palka [Fri, 28 Nov 2025 20:38:04 +0000 (15:38 -0500)]
libstdc++: Correctly implement LWG 3946 changes to const_iterator_t [PR122842]
LWG 3946 made const_iterator_t/sentinel_t agree with ranges::cbegin/cend
by defining the aliases in terms of the CPOs, but I defined it the other
way around in an incorrect way that made the aliases not consider
range-ness of const T via __possibly_const_range. This patch
reimplements the proposed resolution in a more obviously correct way,
mirroring the wording.
PR libstdc++/122842
libstdc++-v3/ChangeLog:
* include/bits/ranges_base.h (__access:_CBegin): Define in
terms of const_iterator directly, not const_iterator_t.
(__access::_CEnd): Likewise in terms of const_sentinel vs
const_sentinel_t.
(const_iterator_t): Move down definition and define in terms
of ranges::cbegin as per LWG 3946.
(const_sentinel_t): Likewise in terms of ranges::cend.
* testsuite/24_iterators/const_iterator/1.cc (test02): Correct
test for int[], std::array and std::vector. Also test
std::string.
Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Andrew MacLeod [Wed, 26 Nov 2025 19:21:13 +0000 (14:21 -0500)]
Undefined bitmasks imply undefined ranges.
bitmask have no way of representing UNDEFINED, and as such, bitmask
intersection returns an unknown_p values instead. This patch has the
function return false in this case, which will indicate UNDEFINED.
PR tree-optimization/122686
gcc/
* range-op.cc (operator_bitwise_and::op1_range): Check for
undefined bitmask.
* value-range.cc (prange::intersect): Handle undefined bitmask
intersection.
(irange::get_bitmask): Ditto.
(irange::intersect_bitmask): Ditto.
* value-range.h (irange_bitmask::intersect): Return false if the
result is UNDEFINED.
Tobias Burnus [Fri, 28 Nov 2025 13:56:30 +0000 (14:56 +0100)]
GCN: Use generic instead of specific arch for default-built multilibs
GCC 15 and ROCm 6.4.0 (released April/May 2025) support generic archs.
Thus, by moving to generic archs, the number of multilibs build by GCC
can be reduced - while the number of supported devices increases.
This commit now replaces the specific gfx... by gfx{9,9-4,10-3,11}-generic,
keeping gfx908 and gfx09a as no generic exists for those.
When building for a device without a multilib but the generic one exists,
there is a diagnostic like:
gcn mkoffload: fatal error: GCC was built without library support for
‘-march=gfx1150’; consider compiling for the associated generic
architecture ‘-march=gfx11-generic’ instead
As gfx900 is no longer build by default, gfx90a was picked as new
default device.
gcc/ChangeLog:
* config.gcc (amdgcn-*-*): Use gfx90a for 'with_arch'.
For TM_MULTILIB_CONFIG, replace specific archs by
gfx{9,9-4,10-3,11}-generic, keep gfx90{8,a}.
* config/gcn/gcn.opt (march=, mtune=): Use gfx90a.
* doc/install.texi (amdgcn): Update accordingly.
Stefan Schulze Frielinghaus [Fri, 28 Nov 2025 12:45:45 +0000 (13:45 +0100)]
s390: Fix deprecated-enum-enum-conversion warnings
With the recent switch in commit r16-5628 defaulting to C++20 some
enumeration arithmetic errors are thrown during bootstrap, now. Fixed
by casting those to type int. I'm using type int here merely because
S390_ALL_BUILTIN_MAX is used in comparisons with other operands of type
int.
gcc/ChangeLog:
* config/s390/s390-builtins.h
(S390_OVERLOADED_BUILTIN_VAR_OFFSET,S390_ALL_BUILTIN_MAX): Fix
enum arithmetic.
* config/s390/s390.cc (OB_DEF): Ditto.
Richard Biener [Fri, 28 Nov 2025 09:06:58 +0000 (10:06 +0100)]
tree-optimization/122844 - bogus reduction chain detection
We may not strip sign-conversions around MIN/MAX operations.
PR tree-optimization/122844
* tree-vect-slp.cc (vect_analyze_slp_reduc_chain): Only
try stripping sign conversions around ops where this is valid.
* gcc.dg/vect/vect-pr122844.c: New testcase.
Tobias Burnus [Fri, 28 Nov 2025 10:44:41 +0000 (11:44 +0100)]
OpenMP/Fortran: Reject ALLOCATE on non-local static variables with trait:cgroup/pteam/thread [PR122892]
OpenMP 6.0 clarified that static-storage objects may only specify the
omp_cgroup_mem_alloc, omp_pteam_mem_alloc, or omp_thread_mem_alloc allocator
inside a BLOCK or procedure. Let's check for this for Fortran.
PR c/122892
gcc/fortran/ChangeLog:
* openmp.cc (gfc_resolve_omp_allocate): Reject non-local
static variables with cgroup/pteam/thread allocators.
* parse.cc: Permit OMP ALLOCATE in BLOCK DATA.
gcc/testsuite/ChangeLog:
* gfortran.dg/gomp/allocate-15.f90: Use another allocator as
omp_{cgroup,pteam}_mem_alloc is invalid for non-local static vars.
* gfortran.dg/gomp/allocate-7.f90: Likewise.
* gfortran.dg/gomp/allocate-static-3.f90: New test.
Jakub Jelinek [Fri, 28 Nov 2025 09:59:35 +0000 (10:59 +0100)]
c++: Remove PMF special cases from cxx_get_alias_set [PR119969]
The use of 0 alias set for PMF * types seems to break modref for some reason,
but because PMFs are canonicalized, there should be no reason to special
case the alias set of PMF or PMF * anymore.
2025-11-27 Jakub Jelinek <jakub@redhat.com>
PR c++/119969
* cp-objcp-common.cc (cxx_get_alias_set): Remove special cases
for TYPE_PTRMEMFUNC_P and INDIRECT_TYPE_P for TYPE_PTRMEMFUNC_P.
* g++.dg/torture/pr119969.C: New test.
Jim Lin [Thu, 27 Nov 2025 07:02:20 +0000 (15:02 +0800)]
RISC-V: Emit \n\t at the end of instruction instead of ;
Instead of emitting only one line `fmv.x.s a5,fa0;slli a5,a5,16;srai a5,a5,16`
gcc/ChangeLog:
* config/riscv/riscv.cc (riscv_output_move): Use \n\t instead
of semicolon to separate instructions in fmv.x.h emulation.
Charlie Jenkins [Wed, 26 Nov 2025 19:29:51 +0000 (11:29 -0800)]
RISC-V: Support --with-cpu
The --with-cpu will allow riscv compilers to have a default mcpu flag.
Setting -mcpu or -march at compile time will override the configured
--with-cpu.
gcc/ChangeLog:
* config.gcc: Add cpu to supported configure options
* config/riscv/riscv.h (riscv_arch_help): Use --with-cpu during
compilation
* doc/install.texi: Mention in docs that --with-cpu is supported
Mark Zhuang [Fri, 28 Nov 2025 03:09:55 +0000 (11:09 +0800)]
RISC-V: Add SpacemiT extension xsmtvdot
gcc/ChangeLog:
* config/riscv/riscv-cores.def (RISCV_CORE): Add xsmtvdot to
spacemit-x60
* config/riscv/riscv-ext.def: Add xsmtvdot
* config/riscv/riscv-ext.opt: Ditto
* config/riscv/t-riscv: Ditto
* doc/riscv-ext.texi: Ditto
* config/riscv/riscv-ext-spacemit.def: Define xsmtvdot
gcc/testsuite/ChangeLog:
* gcc.target/riscv/predef-smt-1.c: New test.
Mark Zhuang [Thu, 27 Nov 2025 13:26:24 +0000 (21:26 +0800)]
RISC-V: Run gen-riscv-ext-opt to regenerate riscv-ext.opt [NFC]
gcc/ChangeLog:
* config/riscv/riscv-ext.opt: Generated file.
Kuan-Lin Chen [Thu, 27 Nov 2025 01:33:54 +0000 (09:33 +0800)]
RISC-V: Add Andes 45 series pipeline description.
The Andes 45 series is a 8-stage, in-order, and dual-issue execution pipeline.
Co-author: Allen Bing-Sung Lu (allen@andestech.com)
gcc/ChangeLog:
* config/riscv/riscv-cores.def (RISCV_TUNE): Add andes-45-sereis.
(RISCV_CORE): Add Andes 45 series cpu list.
* config/riscv/riscv-opts.h
(enum riscv_microarchitecture_type): Add andes_45_series.
* config/riscv/riscv.cc: Add andes_45_tune_info.
* config/riscv/riscv.md: Add andes_45.
* doc/riscv-mcpu.texi: Regenerated for Andes cpu list.
* doc/riscv-mtune.texi: Regenerated for andes-45-series.
* config/riscv/andes-45-series.md: New file.
Kuan-Lin Chen [Thu, 27 Nov 2025 01:19:28 +0000 (09:19 +0800)]
RISC-V: Add Andes 23 series pipeline description.
The Andes 23 series is a 3-stage, in-order execution pipeline and
configurable dual-ALU execution.
Co-author: Allen Bing-Sung Lu (allen@andestech.com)
gcc/ChangeLog:
* config/riscv/riscv-cores.def (RISCV_TUNE): Add andes-23-series.
(RISCV_CORE): Add Andes 23-series cpu list.
* config/riscv/riscv-opts.h
(enum riscv_microarchitecture_type): Add andes_23_series.
* config/riscv/riscv.cc: Add andes_23_tune_info.
* config/riscv/riscv.md: Add andes_23.
* doc/riscv-mcpu.texi: Regenerated for Andes cpu list.
* doc/riscv-mtune.texi: Regenerated for andes-23-series.
* config/riscv/andes-23-series.md: New file.
Jakub Jelinek [Fri, 28 Nov 2025 09:04:53 +0000 (10:04 +0100)]
match.pd: Re-add (y << x) {<,<=,>,>=} x simplifications [PR122733]
Here is my attempt to implement what has been reverted in r16-5648 using ranger.
Note also the changes to the equality pattern, first of all, there
could be e.g. vector << scalar shifts, although they'll likely
fail on the nop_convert vs. nop_convert, but also it would never
match for say unsigned long long @0 and unsigned int @1 etc., pretty
common cases.
The new simplifier asks the ranger about ranges and bitmasks, verifies
@0 is non-zero and that clz of the @0 nonzero bits bitmask (i.e. the minimum
clz of all possible values of @0) is greater than (or greater than or equal
to) maximum shift count. Which one of those depends on if the actual
non-equality comparison is signed or unsigned.
And gimple_match_range_of_expr now includes in itself undefined_p check
and returns false even for that, so that many of the callers don't
need to check that.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/122733
* gimple-match-head.cc (gimple_match_range_of_expr): Return false
even when range_of_expr returns true, but the range is undefined_p.
* match.pd ((mult (plus:s@5 (mult:s@4 @0 @1) @2) @3)): Remove
vr0.undefined_p () check.
((plus (mult:s@5 (plus:s@4 @0 @1) @2) @3)): Likewise.
((X + M*N) / N -> X / N + M): Remove vr4.undefined_p () check.
((X - M*N) / N -> X / N - M): Likewise.
((y << x) == x, (y << x) != x): Use convert2? instead of
nop_convert2? and test INTEGRAL_TYPE_P on TREE_TYPE (@0) rather than
TREE_TYPE (@1).
((y << x) {<,<=,>,>=} x): New simplification.
(((T)(A)) + CST -> (T)(A + CST)): Remove vr.undefined_p () check.
(x_5 == cstN ? cst4 : cst3): Remove r.undefined_p () check.
* gcc.dg/match-shift-cmp-4.c: New test.
* gcc.dg/match-shift-cmp-5.c: New test.
This page took 0.140399 seconds and 5 git commands to generate.