aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2025-11-30a68: parser: parsing of modesJose E. Marchesi8-0/+6508
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org> Co-authored-by: Marcel van der Veer <algol68g@xs4all.nl>
2025-11-30a68: parser: standard prelude definitionsJose E. Marchesi1-0/+1502
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>
2025-11-30a68: parser: syntax check for declarersJose E. Marchesi1-0/+362
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>
2025-11-30a68: parser: bottom-up parserJose E. Marchesi1-0/+3026
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>
2025-11-30a68: parser: parenthesis checkerJose E. Marchesi1-0/+223
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>
2025-11-30a68: parser: top-down parserJose E. Marchesi1-0/+894
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>
2025-11-30a68: parser: keyword tables managementJose E. Marchesi1-0/+254
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>
2025-11-30a68: parser: scannerJose E. Marchesi1-0/+2346
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>
2025-11-30a68: parser: AST nodes attributes/typesJose E. Marchesi1-0/+387
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org> gcc/ChangeLog * algol68/a68-parser-attrs.def: New file.
2025-11-30a68: parser: entry pointJose E. Marchesi1-0/+1181
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>
2025-11-30a68: modules importsJose E. Marchesi1-0/+1263
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.
2025-11-30a68: modules exportsJose E. Marchesi2-0/+895
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.
2025-11-30a68: front-end diagnosticsJose E. Marchesi1-0/+381
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.
2025-11-30a68: unicode support routinesJose E. Marchesi1-0/+453
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.
2025-11-30a68: a681 compiler properJose E. Marchesi1-0/+755
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.
2025-11-30a68: ga68 compiler driverJose E. Marchesi2-0/+246
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.
2025-11-30a68: gcc/algol68 misc filesJose E. Marchesi5-0/+4282
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.
2025-11-30Daily bump.GCC Administrator4-1/+277
2025-11-30c++: Support template block-scope OpenMP user-defined reductions in modules ↵Nathaniel Shead4-5/+49
[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>
2025-11-29c++: Allow lambda expressions in template type parameters [PR116952]Eczbek3-17/+8
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>
2025-11-29c++: Limit P2795R5 handling of jumps across vacuous inits to ↵Jakub Jelinek3-3/+491
!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.
2025-11-29doc: make regenerate-opt-urlsSandra Loosemore31-127/+160
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.
2025-11-29doc: Fix alphabetization of FRV/FT32 option documentation sections.Sandra Loosemore1-43/+43
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.
2025-11-29doc, linux: Clean up GNU/Linux option documentation [PR122243]Sandra Loosemore1-0/+4
gcc/ChangeLog PR other/122243 * doc/invoke.texi: Document -mno-android.
2025-11-29doc, frv: Clean up FRV option documentation [PR122243]Sandra Loosemore2-104/+55
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.
2025-11-29doc, ft32: Clean up FT32 options and documentation [PR122243]Sandra Loosemore2-7/+8
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.
2025-11-29doc, fr30: Clean up FR30 option documentation [PR122243]Sandra Loosemore1-0/+1
gcc/ChangeLog PR other/122243 * doc/invoke.texi (FR30 Options): Add @opindex for -mno-small-model.
2025-11-29doc, bpf: Clean up eBPF option documentation [PR122243]Sandra Loosemore1-12/+18
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.
2025-11-29doc, alpha: Document missing alpha options [PR122243]Sandra Loosemore2-2/+22
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.
2025-11-29doc, darwin: Clean up Darwin options and documentation [PR122243]Sandra Loosemore2-147/+198
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.
2025-11-29doc, mingw: Clean up Cygwin and MinGW option documentation [PR122243]Sandra Loosemore1-2/+7
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.
2025-11-29doc, csky: C-SKY option documentation cleanup [PR122243]Sandra Loosemore1-18/+35
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.
2025-11-29doc, cris: Clean up CRIS option documentation [PR122243]Sandra Loosemore2-10/+44
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.
2025-11-29doc, c6x: Document missing C6X options [PR122243]Sandra Loosemore1-1/+12
gcc/ChangeLog PR other/122243 * doc/invoke.texi (Option Summary) <C6X Options>: Add -mdbst and -mlong-calls. (C6X Options): Likewise.
2025-11-29doc, blackfin: Don't separately document no- form of Blackfin options [PR122243]Sandra Loosemore1-40/+38
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.
2025-11-29doc, arm: Clean up ARM option documentation [PR122243]Sandra Loosemore2-65/+38
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.
2025-11-29doc, gcn: Clean up gcn target options and docs [PR122243] [PR122288]Sandra Loosemore2-15/+26
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.
2025-11-29doc, epiphany: Clean up epiphany target options and docs [PR122243]Sandra Loosemore2-14/+56
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.
2025-11-29doc, aarch64: Clean up aarch64 options and documentation [PR122243]Sandra Loosemore2-26/+28
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.
2025-11-29Daily bump.GCC Administrator6-1/+189
2025-11-28analyzer: Fix 3 C++20 warnings in analyzerJakub Jelinek1-3/+3
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.
2025-11-28powerpc: PowerPC backend, meet C++20Jakub Jelinek1-2/+2
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.
2025-11-28loongarch: LoongArch backend, meet C++20Jakub Jelinek1-2/+2
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.
2025-11-28mips: MIPS backend, meet C++20Jakub Jelinek1-1/+1
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.
2025-11-28riscv: RISCV backend, meet C++20Jakub Jelinek2-4/+5
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.
2025-11-28gcc: fix typo in commentSam James1-1/+1
Just testing pushing after sw migration. gcc/ChangeLog: * crc-verification.cc (crc_symbolic_execution::is_used_outside_the_loop): Fix 'assignment' typo.
2025-11-28Undefined bitmasks imply undefined ranges.Andrew MacLeod3-18/+23
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.
2025-11-28GCN: Use generic instead of specific arch for default-built multilibsTobias Burnus3-13/+14
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.
2025-11-28s390: Fix deprecated-enum-enum-conversion warningsStefan Schulze Frielinghaus2-13/+9
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.
2025-11-28tree-optimization/122844 - bogus reduction chain detectionRichard Biener2-1/+37
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.