aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog34
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/c-family/ChangeLog4
-rw-r--r--gcc/c-family/c.opt4
-rw-r--r--gcc/c/ChangeLog19
-rw-r--r--gcc/c/c-decl.cc20
-rw-r--r--gcc/config/mips/mips.cc52
-rw-r--r--gcc/config/mips/mips.md28
-rw-r--r--gcc/cp/pt.cc8
-rw-r--r--gcc/doc/extend.texi25
-rw-r--r--gcc/doc/invoke.texi12
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/interface.cc19
-rw-r--r--gcc/testsuite/ChangeLog24
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C9
-rw-r--r--gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-msubf.c31
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e2-cache.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e2-cmov.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e2-gp.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr99217.c10
-rw-r--r--gcc/testsuite/gfortran.dg/pr87908.f9049
25 files changed, 296 insertions, 100 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0a7c64..97f1021 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,37 @@
+2025-09-26 Alejandro Colomar <alx@kernel.org>
+
+ * doc/extend.texi: Clarify documentation about lists of
+ parameter forward declarations, and mention that more than one
+ of them are unnecessary.
+ * doc/invoke.texi: Document the new
+ -Wmultiple-parameter-fwd-decl-lists.
+
+2025-09-26 Jan Hubicka <hubicka@ucw.cz>
+
+ * auto-profile.cc (afdo_propagate_edge): Fix handling of precize 0
+ counts.
+
+2025-09-26 Andrew Stubbs <ams@baylibre.com>
+
+ * config/gcn/gcn.cc
+ (gcn_vectorize_support_vector_misalignment): Allow any alignment, as
+ long as it's not packed.
+
+2025-09-26 Jan Hubicka <hubicka@ucw.cz>
+
+ * profile-count.h (profile_probability::operator/): Do not cap
+ twice.
+ (profile_probability::operator/=): Likewise.
+ (profile_probability::apply_scale): Do not watch for overflow.
+ (profile_count::probability_in): Watch overflow.
+
+2025-09-26 Lulu Cheng <chenglulu@loongson.cn>
+
+ PR target/121875
+ * config/loongarch/loongarch.cc
+ (loongarch_can_inline_p): New function.
+ (TARGET_CAN_INLINE_P): Define.
+
2025-09-25 Gerald Pfeifer <gerald@pfeifer.com>
* doc/invoke.texi (Warning Options): Use "bitwise" over
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 021949a..edfad19 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20250926
+20250927
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 803b07d..bf15d94 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,7 @@
+2025-09-26 Alejandro Colomar <alx@kernel.org>
+
+ * c.opt: Add -Wmultiple-parameter-fwd-decl-lists
+
2025-09-23 Alfie Richards <alfie.richards@arm.com>
* c-attribs.cc: Add support for target_version and target_clone mixing.
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 3f5e2f0..4fd8770 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -1086,6 +1086,10 @@ Wmultiple-inheritance
C++ ObjC++ Var(warn_multiple_inheritance) Warning
Warn on direct multiple inheritance.
+Wmultiple-parameter-fwd-decl-lists
+C ObjC Var(warn_multiple_parameter_fwd_decl_lists) Warning EnabledBy(Wextra)
+Warn for multiple lists of forward declarations of function parameters.
+
Wmultistatement-macros
C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 4e78008..ef985ba 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,22 @@
+2025-09-26 Alejandro Colomar <alx@kernel.org>
+
+ * c-decl.cc (c_scope): Rename {warned > had}_forward_parm_decls.
+ (mark_forward_parm_decls): Add
+ -Wmultiple-parameter-fwd-decl-lists.
+
+2025-09-26 Joseph Myers <josmyers@redhat.com>
+
+ PR c/88642
+ * c-typeck.cc (constructor_braced_scalar): New variable.
+ (struct constructor_stack): Add braced_scalar field.
+ (really_start_incremental_init): Handle constructor_braced_scalar
+ and braced_scalar field.
+ (push_init_level): Handle constructor_braced_scalar and
+ braced_scalar field. Give permerror rather than warning for
+ nested braces around scalar initializer.
+ (pop_init_level): Handle constructor_braced_scalar and
+ braced_scalar field.
+
2025-09-24 Joseph Myers <josmyers@redhat.com>
* c-typeck.cc (really_atomic_lvalue): For a COMPOUND_LITERAL_EXPR,
diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index b122e82..7e4c7c2 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -504,10 +504,8 @@ struct GTY((chain_next ("%h.outer"))) c_scope {
if these appears in a function definition. */
BOOL_BITFIELD had_vla_unspec : 1;
- /* True if we already complained about forward parameter decls
- in this scope. This prevents double warnings on
- foo (int a; int b; ...) */
- BOOL_BITFIELD warned_forward_parm_decls : 1;
+ /* True if we parsed a list of forward parameter decls in this scope. */
+ BOOL_BITFIELD had_forward_parm_decls : 1;
/* True if this is the outermost block scope of a function body.
This scope contains the parameters, the local variables declared
@@ -6269,12 +6267,14 @@ mark_forward_parm_decls (void)
{
struct c_binding *b;
- if (pedantic && !current_scope->warned_forward_parm_decls)
- {
- pedwarn (input_location, OPT_Wpedantic,
- "ISO C forbids forward parameter declarations");
- current_scope->warned_forward_parm_decls = true;
- }
+ if (current_scope->had_forward_parm_decls)
+ warning_at (input_location, OPT_Wmultiple_parameter_fwd_decl_lists,
+ "more than one list of forward declarations of parameters");
+ if (pedantic && !current_scope->had_forward_parm_decls)
+ pedwarn (input_location, OPT_Wpedantic,
+ "ISO C forbids forward parameter declarations");
+
+ current_scope->had_forward_parm_decls = true;
for (b = current_scope->bindings; b; b = b->prev)
if (TREE_CODE (b->decl) == PARM_DECL)
diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc
index 81eaa3c..1fa7ba8 100644
--- a/gcc/config/mips/mips.cc
+++ b/gcc/config/mips/mips.cc
@@ -7476,6 +7476,9 @@ static void
mips_start_function_definition (const char *name, bool mips16_p,
tree decl ATTRIBUTE_UNUSED)
{
+ unsigned HOST_WIDE_INT patch_area_size = crtl->patch_area_size;
+ unsigned HOST_WIDE_INT patch_area_entry = crtl->patch_area_entry;
+
if (mips16_p)
fprintf (asm_out_file, "\t.set\tmips16\n");
else
@@ -7488,6 +7491,10 @@ mips_start_function_definition (const char *name, bool mips16_p,
fprintf (asm_out_file, "\t.set\tnomicromips\n");
#endif
+ /* Emit the patching area before the entry label, if any. */
+ if (patch_area_entry > 0)
+ default_print_patchable_function_entry (asm_out_file,
+ patch_area_entry, true);
if (!flag_inhibit_size_directive)
{
fputs ("\t.ent\t", asm_out_file);
@@ -7499,6 +7506,13 @@ mips_start_function_definition (const char *name, bool mips16_p,
/* Start the definition proper. */
ASM_OUTPUT_FUNCTION_LABEL (asm_out_file, name, decl);
+
+ /* And the area after the label. Record it if we haven't done so yet. */
+ if (patch_area_size > patch_area_entry)
+ default_print_patchable_function_entry (asm_out_file,
+ patch_area_size
+ - patch_area_entry,
+ patch_area_entry == 0);
}
/* End a function definition started by mips_start_function_definition. */
@@ -20419,6 +20433,16 @@ mips_option_override (void)
if (TARGET_MICROMIPS && TARGET_MIPS16)
error ("unsupported combination: %s", "-mips16 -mmicromips");
+ /* Make -mmips16e2 imply -mips16 and forbid its coexistence with
+ -mmicromips as the ASE requires. */
+ if (TARGET_MIPS16E2)
+ {
+ if (TARGET_MICROMIPS)
+ error ("unsupported combination: %s", "-mmips16e2 -mmicromips");
+
+ target_flags |= MASK_MIPS16;
+ }
+
/* Prohibit Paired-Single and MSA combination. This is software restriction
rather than architectural. */
if (ISA_HAS_MSA && TARGET_PAIRED_SINGLE_FLOAT)
@@ -20671,6 +20695,15 @@ mips_option_override (void)
"-mcompact-branches=never");
}
+ /* MIPS16* ASE is forbidden in Release 6, so -mips16 is not available
+ for MIPS R6 onwards. */
+ if ((mips_base_compression_flags & MASK_MIPS16) && mips_isa_rev >= 6)
+ error ("MIPS16* ASE is forbidden in Release 6");
+
+ /* Make sure that the user use Release[2,5] when using -mmips16e2. */
+ if (TARGET_MIPS16E2 && mips_isa_rev < 2)
+ error ("%<-mmips16e2%> requires Release[2,5]");
+
/* Require explicit relocs for MIPS R6 onwards. This enables simplification
of the compact branch and jump support through the backend. */
if (!TARGET_EXPLICIT_RELOCS && mips_isa_rev >= 6)
@@ -23331,6 +23364,21 @@ mips_bit_clear_p (enum machine_mode mode, unsigned HOST_WIDE_INT m)
return false;
}
+/* define TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY */
+
+/* The MIPS function start is implemented in the prologue function.
+ TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY needs to be inserted
+ before or after the function name, so this function does not
+ use a public implementation. This function is implemented in
+ mips_start_function_definition. */
+
+void
+mips_print_patchable_function_entry (FILE *file ATTRIBUTE_UNUSED,
+ unsigned HOST_WIDE_INT
+ patch_area_size ATTRIBUTE_UNUSED,
+ bool record_p ATTRIBUTE_UNUSED)
+{}
+
/* Initialize the GCC target structure. */
#undef TARGET_ASM_ALIGNED_HI_OP
#define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
@@ -23644,6 +23692,10 @@ mips_bit_clear_p (enum machine_mode mode, unsigned HOST_WIDE_INT m)
#undef TARGET_DOCUMENTATION_NAME
#define TARGET_DOCUMENTATION_NAME "MIPS"
+#undef TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY
+#define TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY \
+mips_print_patchable_function_entry
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-mips.h"
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index aadf4dd..99654cc 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -2617,7 +2617,8 @@
(fma:ANYF (match_operand:ANYF 1 "register_operand")
(match_operand:ANYF 2 "register_operand")
(neg:ANYF (match_operand:ANYF 3 "register_operand"))))]
- "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)")
+ "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
+ || ISA_HAS_FUSED_MADDF")
(define_insn "*fms<mode>4_msub3"
[(set (match_operand:ANYF 0 "register_operand" "=f")
@@ -2639,6 +2640,16 @@
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
+(define_insn "*fms<mode>4_msubf"
+ [(set (match_operand:ANYF 0 "register_operand" "=f")
+ (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f")
+ (neg:ANYF (match_operand:ANYF 3 "register_operand" "0"))))]
+ "ISA_HAS_FUSED_MADDF"
+ "msubf.<fmt>\t%0,%1,%2"
+ [(set_attr "type" "fmadd")
+ (set_attr "mode" "<UNITMODE>")])
+
;; fnma is defined in GCC as (fma (neg op1) op2 op3)
;; (-op1 * op2) + op3 ==> -(op1 * op2) + op3 ==> -((op1 * op2) - op3)
;; The mips nmsub instructions implement -((op1 * op2) - op3)
@@ -2650,8 +2661,9 @@
(fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand"))
(match_operand:ANYF 2 "register_operand")
(match_operand:ANYF 3 "register_operand")))]
- "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
- && !HONOR_SIGNED_ZEROS (<MODE>mode)")
+ "((ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
+ && !HONOR_SIGNED_ZEROS (<MODE>mode))
+ || ISA_HAS_FUSED_MADDF")
(define_insn "*fnma<mode>4_nmsub3"
[(set (match_operand:ANYF 0 "register_operand" "=f")
@@ -2673,6 +2685,16 @@
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
+(define_insn "*fnma<mode>4_msubf"
+ [(set (match_operand:ANYF 0 "register_operand" "=f")
+ (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
+ (match_operand:ANYF 2 "register_operand" "f")
+ (match_operand:ANYF 3 "register_operand" "0")))]
+ "ISA_HAS_FUSED_MADDF"
+ "msubf.<fmt>\t%0,%1,%2"
+ [(set_attr "type" "fmadd")
+ (set_attr "mode" "<UNITMODE>")])
+
;; fnms is defined as: (fma (neg op1) op2 (neg op3))
;; ((-op1) * op2) - op3 ==> -(op1 * op2) - op3 ==> -((op1 * op2) + op3)
;; The mips nmadd instructions implement -((op1 * op2) + op3)
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
index 06287f0..bd60d51 100644
--- a/gcc/cp/pt.cc
+++ b/gcc/cp/pt.cc
@@ -8927,8 +8927,9 @@ convert_template_argument (tree parm,
&& same_type_p (TREE_TYPE (orig_arg), t))
orig_arg = TREE_OPERAND (orig_arg, 0);
- if (!type_dependent_expression_p (orig_arg)
- && !uses_template_parms (t))
+ if (!uses_template_parms (t)
+ && !(force_conv ? uses_template_parms (orig_arg)
+ : type_dependent_expression_p (orig_arg)))
/* We used to call digest_init here. However, digest_init
will report errors, which we don't want when complain
is zero. More importantly, digest_init will try too
@@ -22330,7 +22331,8 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
if (r == NULL_TREE && TREE_CODE (t) == PARM_DECL)
{
/* We get here for a use of 'this' in an NSDMI. */
- if (DECL_NAME (t) == this_identifier && current_class_ptr)
+ if (DECL_NAME (t) == this_identifier && current_class_ptr
+ && !LAMBDA_TYPE_P (TREE_TYPE (TREE_TYPE (current_class_ptr))))
RETURN (current_class_ptr);
/* Parameters of non-templates map to themselves (e.g. in
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 7f01f2c..384211f 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -670,16 +670,21 @@ tester (int len; char data[len][len], int len)
@end smallexample
@cindex parameter forward declaration
-The @samp{int len} before the semicolon is a @dfn{parameter forward
-declaration}, and it serves the purpose of making the name @code{len}
-known when the declaration of @code{data} is parsed.
-
-You can write any number of such parameter forward declarations in the
-parameter list. They can be separated by commas or semicolons, but the
-last one must end with a semicolon, which is followed by the ``real''
-parameter declarations. Each forward declaration must match a ``real''
-declaration in parameter name and data type. ISO C99 does not support
-parameter forward declarations.
+The @samp{int len} before the semicolon
+is a @dfn{parameter forward declaration},
+and it serves the purpose of making the name @code{len} known
+when the declaration of @code{data} is parsed.
+
+Lists of parameter forward declarations are terminated by semicolons,
+and parameter forward declarations are separated within such lists by commas,
+just like in the regular list of parameter declarations.
+
+You can write any number of lists of parameter forward declaration,
+but using more than one is unnecessary.
+The last semicolon is followed by the list of parameter declarations.
+Each parameter forward declaration must match
+a parameter declaration in parameter name and data type.
+ISO C99 does not support parameter forward declarations.
@node Zero Length
@subsection Arrays of Length Zero
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index cea83f6..99607a0 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -540,7 +540,9 @@ Objective-C and Objective-C++ Dialects}.
@gccoptlist{-Wbad-function-cast -Wdeprecated-non-prototype -Wfree-labels
-Wmissing-declarations -Wmissing-parameter-name -Wmissing-parameter-type
-Wdeclaration-missing-parameter-type -Wmissing-prototypes
--Wmissing-variable-declarations -Wnested-externs -Wold-style-declaration
+-Wmissing-variable-declarations
+-Wmultiple-parameter-fwd-decl-lists
+-Wnested-externs -Wold-style-declaration
-Wold-style-definition -Wstrict-prototypes -Wtraditional
-Wtraditional-conversion -Wdeclaration-after-statement -Wpointer-sign}
@@ -6683,6 +6685,7 @@ name is still supported, but the newer name is more descriptive.)
-Wmissing-parameter-name @r{(C/ObjC only)}
-Wmissing-parameter-type @r{(C/ObjC only)}
-Wold-style-declaration @r{(C/ObjC only)}
+-Wmultiple-parameter-fwd-decl-lists @r{(C/ObjC only)}
-Woverride-init @r{(C/ObjC only)}
-Wredundant-move @r{(C++ and Objective-C++ only)}
-Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}
@@ -10536,6 +10539,13 @@ is not considered an old-style definition in C23 mode, because it is
equivalent to @samp{(void)} in that case, but is considered an
old-style definition for older standards.
+@opindex Wmultiple-parameter-fwd-decl-lists
+@opindex Wno-multiple-parameter-fwd-decl-lists
+@item -Wmultiple-parameter-fwd-decl-lists @r{(C and Objective-C only)}
+Warn if more than one list of forward declarations of parameters
+appears in a function prototype.
+This warning is also enabled by @option{-Wextra}.
+
@opindex Wdeprecated-non-prototype
@opindex Wno-deprecated-non-prototype
@item -Wdeprecated-non-prototype @r{(C and Objective-C only)}
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 68842d6..4427f6a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2025-09-26 Harald Anlauf <anlauf@gcc.gnu.org>
+
+ PR fortran/122002
+ * decl.cc (gfc_get_pdt_instance): Initialize 'instance' to NULL
+ and set 'kind_value' to zero before calling gfc_extract_int.
+ * primary.cc (gfc_match_rvalue): Intitialize 'ctr_arglist' to
+ NULL and test for default values if gfc_get_pdt_instance
+ returns NULL.
+
2025-09-25 Harald Anlauf <anlauf@gmx.de>
PR fortran/121939
diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc
index 41c9417..ef5a17d 100644
--- a/gcc/fortran/interface.cc
+++ b/gcc/fortran/interface.cc
@@ -1968,25 +1968,6 @@ check_interface0 (gfc_interface *p, const char *interface_name)
psave = p;
for (; p; p = p->next)
{
- if (p->sym->attr.vtab)
- {
- bool found = false;
- gfc_component *c = p->sym->ts.u.derived->components;
- for (; c; c = c->next)
- {
- if (c->name[0] == '_')
- continue;
- /* This check seems to be as much as can sensibly be done here.
- If there is more than one proc_pointer components, resolution
- of the call will select the right one. */
- if (c->attr.proc_pointer && c->ts.interface
- && (c->attr.subroutine || c->attr.function))
- found = true;
- }
- if (found)
- continue;
- }
-
/* Make sure all symbols in the interface have been defined as
functions or subroutines. */
if (((!p->sym->attr.function && !p->sym->attr.subroutine)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 16403e2..0642410 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,27 @@
+2025-09-26 Alejandro Colomar <alx@kernel.org>
+
+ * gcc.dg/Wmultiple-parameter-fwd-decl-lists.c: New test.
+
+2025-09-26 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pdt_48.f03:
+
+2025-09-26 Joseph Myers <josmyers@redhat.com>
+
+ PR c/88642
+ * gcc.dg/c2y-init-1.c: New test.
+
+2025-09-26 Lulu Cheng <chenglulu@loongson.cn>
+
+ PR target/121875
+ * gcc.target/loongarch/can_inline_1.c: New test.
+ * gcc.target/loongarch/can_inline_2.c: New test.
+ * gcc.target/loongarch/can_inline_3.c: New test.
+ * gcc.target/loongarch/can_inline_4.c: New test.
+ * gcc.target/loongarch/can_inline_5.c: New test.
+ * gcc.target/loongarch/can_inline_6.c: New test.
+ * gcc.target/loongarch/pr121875.c: New test.
+
2025-09-25 Harald Anlauf <anlauf@gmx.de>
PR fortran/121939
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C
new file mode 100644
index 0000000..8bbff1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C
@@ -0,0 +1,8 @@
+// PR c++/122048
+// { dg-do compile { target c++14 } }
+
+class X {
+ void f();
+ int i;
+};
+void X::f() {[&](auto) {sizeof i;}(1);}
diff --git a/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C b/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C
new file mode 100644
index 0000000..bbf295c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C
@@ -0,0 +1,15 @@
+// PR c++/121854
+// { dg-do compile { target c++23 } }
+
+struct S
+{
+ static void static_func(){}
+
+ void func()
+ {
+ auto lambda = [](this auto)
+ {
+ static_func();
+ };
+ }
+};
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C
new file mode 100644
index 0000000..107a1bb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C
@@ -0,0 +1,9 @@
+// PR c++/112632
+// { dg-do compile { target c++20 } }
+
+template<int N> concept A = N != 0;
+template<char C> concept B = A<C>;
+template<int N> concept C = B<N>;
+
+static_assert(A<256>);
+static_assert(!C<256>);
diff --git a/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c b/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
new file mode 100644
index 0000000..c3edbf6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-Wmultiple-parameter-fwd-decl-lists" } */
+
+void f(int n, int m; int n, int m);
+void g(int n; int m; int n, int m); /* { dg-warning "more than one list of forward declarations" } */
+void h(int n; int n; int n); /* { dg-warning "more than one list of forward declarations" } */
diff --git a/gcc/testsuite/gcc.target/mips/mips-msubf.c b/gcc/testsuite/gcc.target/mips/mips-msubf.c
new file mode 100644
index 0000000..424ca21
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/mips-msubf.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-mhard-float -ffast-math -march=mips32r6" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-O1" } { "" } } */
+/* { dg-final { scan-assembler-times "\tmsubf\\.s\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tmsubf\\.d\t" 2 } } */
+
+NOMIPS16 float
+test01 (float x, float y, float z)
+{
+ return x - (y * z);
+}
+
+NOMIPS16 double
+test02 (double x, double y, double z)
+{
+ return x - (y * z);
+}
+
+NOMIPS16 float
+test03 (float x, float y, float z)
+{
+ return (y * z) - x;
+}
+
+NOMIPS16 double
+test04 (double x, double y, double z)
+{
+ return (y * z) - x;
+}
+
+
diff --git a/gcc/testsuite/gcc.target/mips/mips16e2-cache.c b/gcc/testsuite/gcc.target/mips/mips16e2-cache.c
index dcc39b5..c791575 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e2-cache.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e2-cache.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips32r2 -mips16 -mmips16e2" } */
+/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
/* Test cache. */
diff --git a/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c b/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
index 129ea23..8d71e88 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2 -mbranch-cost=2" } */
+/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2 -mbranch-cost=2" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* Test MOVN. */
diff --git a/gcc/testsuite/gcc.target/mips/mips16e2-gp.c b/gcc/testsuite/gcc.target/mips/mips16e2-gp.c
index 7955472..5fab454 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e2-gp.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e2-gp.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2" } */
+/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
/* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
/* Generate GP-relative ADDIU. */
diff --git a/gcc/testsuite/gcc.target/mips/mips16e2.c b/gcc/testsuite/gcc.target/mips/mips16e2.c
index 166aa74..33c4bb5 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e2.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2" } */
+/* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
/* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
/* ANDI is a two operand instruction. Hence, it won't be generated if src and
diff --git a/gcc/testsuite/gcc.target/mips/pr99217.c b/gcc/testsuite/gcc.target/mips/pr99217.c
new file mode 100644
index 0000000..ac1e27b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/pr99217.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fpatchable-function-entry=1" } */
+/* { dg-final { scan-assembler "foo:\n.*.LPFE0:\n\t.set\tnoreorder\n\tnop\n\t.set\treorder" } } */
+
+/* Test the placement of the .LPFE0 label. */
+
+void
+foo (void)
+{
+}
diff --git a/gcc/testsuite/gfortran.dg/pr87908.f90 b/gcc/testsuite/gfortran.dg/pr87908.f90
deleted file mode 100644
index 6fdc109..0000000
--- a/gcc/testsuite/gfortran.dg/pr87908.f90
+++ /dev/null
@@ -1,49 +0,0 @@
-! { dg-do run }
-!
-! Check the fix for pr87908, which used to fail with error:
-! Procedure ‘__vtab_m_T’ in generic interface '_dtio_formatted_read' at (1) is
-! neither function nor subroutine.
-!
-! Contributed by David Bolvansky <david.bolvansky@gmail.com>
-!
-module m
- type t
- character(34) :: c
- contains
- procedure :: g
- generic :: read(formatted) => g
- end type
- integer :: ctr = 0
-contains
- subroutine s (unit, x)
- integer, intent(in) :: unit
- integer, intent(in) :: x(:)
- interface read(formatted)
- procedure g
- end interface
- end
- subroutine g (dtv, unit, iotype, v_list, iostat, iomsg)
- class(t), intent(inout) :: dtv
- integer, intent(in) :: unit
- character(*), intent(in) :: iotype
- integer, intent(in) :: v_list(:)
- integer, intent(out) :: iostat
- character(*), intent(inout) :: iomsg
- read (unit, '(a)', iostat=iostat, iomsg=iomsg) dtv%c
- ctr = ctr + 1
- end
-end
-
- use m
- type(t) :: x
- open (10, status = 'scratch')
- write(10, fmt=*) "Mary had a little lamb "
- write(10, fmt=*) "whose fleece was as white as gold "
- rewind(10)
- read(10, fmt=*) x
- if (trim(x%c) /= "Mary had a little lamb") stop 1
- read(10, fmt=*) x
- if (trim(x%c) /= "whose fleece was as white as gold") stop 2
- close(10)
- if (ctr /= 2) stop 3
-end