https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118337

            Bug ID: 118337
           Summary: [15 Regression] Fortran *.mod compatibility
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

We are seeing weird ICEs when trunk gfortran consumes gfortran 14 produced
*.mod files.
E.g.
f951: internal compiler error: in gfc_intrinsic_subroutine_by_id, at            
fortran/intrinsic.cc:1069                                                       
Please submit a full bug report, with preprocessed source (by using             
-freport-bug).                                                                  
when building elk and
internal compiler error: in gfc_trans_structure_assign, at                      
fortran/trans-expr.cc:9885                                                      
Please submit a full bug report, with preprocessed source (by using             
-freport-bug).                                                                  
when building cp2k or OpenMolcas.
Now, I've reproduced it for OpenMolcas and it builds fine if I use
xc_f03_lib_m.mod
built by gcc 15 and ICEs if I use xc_f03_lib_m.mod built by gcc 14 (both from
libxc package).
The difference between the modules after zcat is
--- xc_f03_lib_m.14     2025-01-07 18:47:53.307400792 +0100
+++ xc_f03_lib_m.15     2025-01-07 18:47:44.155602052 +0100
@@ -647,12 +647,12 @@ UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0)
 UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP PRIVATE_COMP) ((818 'c_address'
 (INTEGER 8 0 1 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE ())) PRIVATE (DERIVED 6 0 1 1
-VOID ()) 0 0 () () 0 () () () 2 42 0)
+VOID ()) 0 0 () () 0 () () () 2 63 0)
 10 'C_funptr' '__iso_c_binding' '' 1 ((DERIVED UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP PRIVATE_COMP) (
 (819 'c_address' (INTEGER 8 0 1 0 INTEGER ()) () () () (UNKNOWN-FL
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE ())) PRIVATE (
-DERIVED 10 0 1 1 VOID ()) 0 0 () () 0 () () () 2 44 0)
+DERIVED 10 0 1 1 VOID ()) 0 0 () () 0 () () () 2 65 0)
 30 '__copy___iso_c_binding_C_funptr' 'xc_f03_lib_m' '' 820 ((PROCEDURE
 UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 ARTIFICIAL SUBROUTINE
 ELEMENTAL PURE ALWAYS_EXPLICIT) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 (
while it uses the same 
GFORTRAN module version '15' created from libxc_master.F90

I've tried to bisect where this change occurred, and used much simpler
module foo
  use, intrinsic :: iso_c_binding
  implicit none
  type :: bar
    private
    type(c_ptr) :: ptr = C_NULL_PTR
  end type bar
end module foo
for that.
I see 3 commits that changed the resulting foo.mod over the 15 development so
far,
r15-4295, r15-6471 and r15-6615.
The r15-4294 to r15-4295 difference is after zcat
--- 1   2025-01-07 13:24:39.649273827 -0500
+++ 2   2025-01-07 13:24:42.949309056 -0500
@@ -23,12 +23,12 @@ INTEGER 8 0 0 1 UNKNOWN ()) 0 '0' ()) ()
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP PRIVATE_COMP) (
 (6 'c_address' (INTEGER 8 0 1 0 INTEGER ()) () () () (UNKNOWN-FL
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE ())) PRIVATE (
-DERIVED 3 0 1 1 VOID ()) 0 0 () () 0 () () () 2 44 0)
+DERIVED 3 0 1 1 VOID ()) 0 0 () () 0 () () () 2 65 0)
 4 'C_ptr' '__iso_c_binding' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC
 UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP PRIVATE_COMP) ((7 'c_address'
 (INTEGER 8 0 1 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE ())) PRIVATE (DERIVED 4 0 1 1
-VOID ()) 0 0 () () 0 () () () 2 42 0)
+VOID ()) 0 0 () () 0 () () () 2 63 0)
 8 '__def_init___iso_c_binding_C_funptr' 'foo' '' 1 ((VARIABLE
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 ARTIFICIAL TARGET)
 () (DERIVED 3 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0)
@@ -119,76 +119,76 @@ UNKNOWN-ACCESS (UNKNOWN 0 0 0 0 UNKNOWN
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U00000007' ()) () 0
-() () () 2 35)
+() () () 2 56)
 44 'c_associated' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC DECL UNKNOWN 0 0 INTRINSIC FUNCTION PURE) () (LOGICAL 4 0 0
-0 LOGICAL ()) 45 0 (46 47) () 0 () () () 2 48)
+0 LOGICAL ()) 45 0 (46 47) () 0 () () () 2 69)
 48 'c_backspace' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U00000008' ()) () 0
-() () () 2 36)
+() () () 2 57)
 49 'c_bool' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 LOGICAL ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '1' ())
-() 0 () () () 2 32)
+() 0 () () () 2 53)
 50 'c_carriage_return' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U0000000d' ()) () 0
-() () () 2 39)
+() () () 2 60)
 51 'c_char' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 CHARACTER ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '1' ())
-() 0 () () () 2 33)
+() 0 () () () 2 54)
 52 'c_double' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 REAL ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '8' ()) ()
-0 () () () 2 25)
+0 () () () 2 46)
 53 'c_double_complex' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 COMPLEX ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '8' ())
-() 0 () () () 2 29)
+() 0 () () () 2 50)
 54 'c_f_pointer' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC DECL UNKNOWN 0 0 INTRINSIC SUBROUTINE) () (UNKNOWN 0 0 0 0
-UNKNOWN ()) 55 0 (56 57 58) () 0 () () () 2 46)
+UNKNOWN ()) 55 0 (56 57 58) () 0 () () () 2 67)
 59 'c_f_procpointer' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC DECL UNKNOWN 0 0 INTRINSIC SUBROUTINE) () (UNKNOWN 0 0 0 0
-UNKNOWN ()) 60 0 (61 62) () 0 () () () 2 47)
+UNKNOWN ()) 60 0 (61 62) () 0 () () () 2 68)
 63 'c_float' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 REAL ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '4' ()) ()
-0 () () () 2 24)
+0 () () () 2 45)
 64 'c_float128' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 REAL ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '16' ()) ()
-0 () () () 2 27)
+0 () () () 2 48)
 65 'c_float128_complex' '__iso_c_binding' '' 1 ((PARAMETER
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) ()
 (INTEGER 4 0 1 1 COMPLEX ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ())
-0 '16' ()) () 0 () () () 2 31)
+0 '16' ()) () 0 () () () 2 52)
 66 'c_float_complex' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 COMPLEX ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '4' ())
-() 0 () () () 2 28)
+() 0 () () () 2 49)
 67 'c_form_feed' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U0000000c' ()) () 0
-() () () 2 37)
+() () () 2 58)
 68 'c_funloc' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 INTRINSIC FUNCTION
 ARRAY_OUTER_DEPENDENCY) () (DERIVED 3 0 1 0 DERIVED ()) 0 0 () () 0 () ()
-() 2 49)
+() 2 70)
 69 'c_funptr' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION GENERIC IS_ISO_C
 ARRAY_OUTER_DEPENDENCY) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () ()
-() 2 44)
+() 2 65)
 70 'c_horizontal_tab' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U00000009' ()) () 0
-() () () 2 40)
+() () () 2 61)
 71 'c_int' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '4' ())
@@ -264,7 +264,7 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_IN
 89 'c_loc' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 INTRINSIC FUNCTION
 ARRAY_OUTER_DEPENDENCY) () (DERIVED 4 0 1 0 DERIVED ()) 0 0 () () 0 () ()
-() 2 50)
+() 2 71)
 90 'c_long' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '8' ())
@@ -272,11 +272,11 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_IN
 91 'c_long_double' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 REAL ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '10' ()) ()
-0 () () () 2 26)
+0 () () () 2 47)
 92 'c_long_double_complex' '__iso_c_binding' '' 1 ((PARAMETER
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) ()
 (INTEGER 4 0 1 1 COMPLEX ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ())
-0 '10' ()) () 0 () () () 2 30)
+0 '10' ()) () 0 () () () 2 51)
 93 'c_long_long' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '8' ())
@@ -285,26 +285,26 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_IN
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U0000000a' ()) () 0
-() () () 2 38)
+() () () 2 59)
 95 'c_null_char' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U00000000' ()) () 0
-() () () 2 34)
+() () () 2 55)
 96 'c_null_funptr' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP IS_ISO_C) () (
 DERIVED 3 0 1 1 VOID ()) 0 0 () (STRUCTURE (DERIVED 3 0 0 0 DERIVED ())
 0 (((CONSTANT (INTEGER 8 0 0 1 UNKNOWN ()) 0 '0' ()) ())) () ()) () 0 ()
-() () 2 45)
+() () 2 66)
 97 'c_null_ptr' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP IS_ISO_C) () (
 DERIVED 4 0 1 1 VOID ()) 0 0 () (STRUCTURE (DERIVED 4 0 0 0 DERIVED ())
 0 (((CONSTANT (INTEGER 8 0 0 1 UNKNOWN ()) 0 '0' ()) ())) () ()) () 0 ()
-() () 2 43)
+() () 2 64)
 98 'c_ptr' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION GENERIC IS_ISO_C
 ARRAY_OUTER_DEPENDENCY) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () ()
-() 2 42)
+() 2 63)
 99 'c_ptrdiff_t' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (INTEGER 4 0
 1 1 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 1 1 UNKNOWN ()) 0 '8' ())
@@ -323,12 +323,12 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_IN
 () 0 () () () 2 7)
 103 'c_sizeof' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
 UNKNOWN-PROC DECL UNKNOWN 0 0 INTRINSIC FUNCTION PURE) () (INTEGER 8 0 0
-0 INTEGER ()) 104 0 (105) () 0 () () () 2 51)
+0 INTEGER ()) 104 0 (105) () 0 () () () 2 72)
 106 'c_vertical_tab' '__iso_c_binding' '' 1 ((PARAMETER UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_INTEROP IS_ISO_C) () (CHARACTER 1
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U0000000b' ()) () 0
-() () () 2 41)
+() () () 2 62)
 107 'foo' 'foo' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
 UNKNOWN 0 0) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
 23 '__copy___iso_c_binding_C_funptr' 'foo' '' 108 ((PROCEDURE

r15-6470 to r15-6471 difference is
--- 1   2025-01-07 13:39:26.994710159 -0500
+++ 2   2025-01-07 13:39:21.321649763 -0500
@@ -329,19 +329,22 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_C_IN
 0 1 1 CHARACTER ((CONSTANT (INTEGER 8 0 0 0 INTEGER ()) 0 '1' ()))) 0 0
 () (CONSTANT (CHARACTER 1 0 1 1 UNKNOWN (())) 0 1 '\U0000000b' ()) () 0
 () () () 2 62)
-107 'foo' 'foo' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+107 'f_c_string' '__iso_c_binding' '' 1 ((PROCEDURE UNKNOWN-INTENT
+UNKNOWN-PROC DECL UNKNOWN 0 0 INTRINSIC FUNCTION PURE) () (CHARACTER 1 0
+0 0 CHARACTER ()) 108 0 (109 110) () 0 () () () 2 73)
+111 'foo' 'foo' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
 UNKNOWN 0 0) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
-23 '__copy___iso_c_binding_C_funptr' 'foo' '' 108 ((PROCEDURE
+23 '__copy___iso_c_binding_C_funptr' 'foo' '' 112 ((PROCEDURE
 UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 ARTIFICIAL SUBROUTINE
 ELEMENTAL PURE ALWAYS_EXPLICIT) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 (
-109 110) () 0 () () () 0 0)
-31 '__copy___iso_c_binding_C_ptr' 'foo' '' 111 ((PROCEDURE
+113 114) () 0 () () () 0 0)
+31 '__copy___iso_c_binding_C_ptr' 'foo' '' 115 ((PROCEDURE
 UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 ARTIFICIAL SUBROUTINE
 ELEMENTAL PURE ALWAYS_EXPLICIT) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 (
-112 113) () 0 () () () 0 0)
-39 '__copy_foo_Bar' 'foo' '' 114 ((PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC
+116 117) () 0 () () () 0 0)
+39 '__copy_foo_Bar' 'foo' '' 118 ((PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC
 DECL UNKNOWN 0 0 ARTIFICIAL SUBROUTINE ELEMENTAL PURE ALWAYS_EXPLICIT) ()
-(UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 (115 116) () 0 () () () 0 0)
+(UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 (119 120) () 0 () () () 0 0)
 46 'c_ptr_1' '' '' 45 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 DUMMY) () (VOID 0 0 0 0 VOID ()) 0 0 () () 0 () () () 0 0)
 47 'c_ptr_2' '' '' 45 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
@@ -358,22 +361,27 @@ OPTIONAL DUMMY) () (INTEGER 4 0 0 0 INTE
 () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
 105 'x' '' '' 104 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY)
 () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
-109 'src' '' '' 108 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+109 'string' '' '' 108 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+DUMMY) () (CHARACTER 1 0 0 0 CHARACTER (())) 0 0 () () 0 () () () 0 0)
+110 'asis' '' '' 108 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+OPTIONAL DUMMY) () (CHARACTER 1 0 0 0 CHARACTER (())) 0 0 () () 0 () ()
+() 0 0)
+113 'src' '' '' 112 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 3 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
-110 'dst' '' '' 108 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+114 'dst' '' '' 112 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 3 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
-112 'src' '' '' 111 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+116 'src' '' '' 115 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 4 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
-113 'dst' '' '' 111 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+117 'dst' '' '' 115 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 4 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
-115 'src' '' '' 114 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+119 'src' '' '' 118 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 2 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
-116 'dst' '' '' 114 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
+120 'dst' '' '' 118 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
 ARTIFICIAL DUMMY) () (DERIVED 2 0 0 0 DERIVED ()) 0 0 () () 0 () () () 0
 0)
 )
@@ -399,4 +407,5 @@ ARTIFICIAL DUMMY) () (DERIVED 2 0 0 0 DE
 'c_long_double_complex' 0 92 'c_long_long' 0 93 'c_new_line' 0 94
 'c_null_char' 0 95 'c_null_funptr' 0 96 'c_null_ptr' 0 97 'c_ptr' 0 98
 'c_ptrdiff_t' 0 99 'c_short' 0 100 'c_signed_char' 0 101 'c_size_t' 0
-102 'c_sizeof' 0 103 'c_vertical_tab' 0 106 'foo' 0 107)
+102 'c_sizeof' 0 103 'c_vertical_tab' 0 106 'f_c_string' 0 107 'foo' 0
+111)

and finally r15-6614 to r15-6615 difference is
--- 1   2025-01-07 13:40:19.903271399 -0500
+++ 2   2025-01-07 13:40:24.276317238 -0500
@@ -51,8 +51,8 @@ DERIVED ()) 0 0 () () 0 () () () 0 0)
 UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) () (DERIVED 17 0 0 0 DERIVED ())
 0 0 () () 0 () () () 0 0)
 13 '__vtype___iso_c_binding_C_funptr' 'foo' '' 1 ((DERIVED
-UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) ((18 '_hash' (
-INTEGER 4 0 0 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
+UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RECURSIVE VTYPE) ((18
+'_hash' (INTEGER 4 0 0 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE (CONSTANT (INTEGER 4 0 0 0
 INTEGER ()) 0 '0' ())) (19 '_size' (INTEGER 8 0 0 0 INTEGER ()) () () ()
 (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (
@@ -72,10 +72,10 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUT
 UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0))) UNKNOWN-ACCESS (
 UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0 0)
 15 '__vtype___iso_c_binding_C_ptr' 'foo' '' 1 ((DERIVED UNKNOWN-INTENT
-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) ((26 '_hash' (INTEGER 4 0 0 0
-INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
-UNKNOWN 0 0) PRIVATE (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '0' ())) (
-27 '_size' (INTEGER 8 0 0 0 INTEGER ()) () () () (UNKNOWN-FL
+UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RECURSIVE VTYPE) ((26 '_hash' (INTEGER
+4 0 0 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC
+UNKNOWN UNKNOWN 0 0) PRIVATE (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '0'
+())) (27 '_size' (INTEGER 8 0 0 0 INTEGER ()) () () () (UNKNOWN-FL
 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (28 '_extends'
 (DERIVED 15 0 0 0 DERIVED ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
 UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (29 '_def_init' (
@@ -93,25 +93,26 @@ UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUT
 UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0))) UNKNOWN-ACCESS (
 UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0 0)
 17 '__vtype_foo_Bar' 'foo' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC
-UNKNOWN UNKNOWN 0 0 VTYPE) ((34 '_hash' (INTEGER 4 0 0 0 INTEGER ()) ()
-() () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0)
-PRIVATE (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1511322' ())) (35
-'_size' (INTEGER 8 0 0 0 INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (36 '_extends' (DERIVED 17 0
-0 0 DERIVED ()) () () () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
-UNKNOWN 0 0 POINTER) PRIVATE) (37 '_def_init' (DERIVED 2 0 0 0 DERIVED ())
-() () () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
-ARTIFICIAL POINTER) PRIVATE) (38 '_copy' (UNKNOWN 0 39 0 0 UNKNOWN ()) ()
-() () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0
-SUBROUTINE ELEMENTAL PURE ALWAYS_EXPLICIT PROC_POINTER) PRIVATE (
-UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (40 '_final' (
-UNKNOWN 0 0 0 0 UNKNOWN ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ARTIFICIAL PROC_POINTER) PRIVATE (NULL
-(UNKNOWN 0 0 0 0 UNKNOWN ()) 0 ()) (UNKNOWN-ACCESS OVERRIDABLE PASS
-SPECIFIC PPC '' 0)) (41 '_deallocate' (UNKNOWN 0 0 0 0 UNKNOWN ()) () ()
-() (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUTINE
-PROC_POINTER) PRIVATE (UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)))
-UNKNOWN-ACCESS (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0 0)
+UNKNOWN UNKNOWN 0 0 RECURSIVE VTYPE) ((34 '_hash' (INTEGER 4 0 0 0
+INTEGER ()) () () () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+UNKNOWN 0 0) PRIVATE (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1511322'
+())) (35 '_size' (INTEGER 8 0 0 0 INTEGER ()) () () () (UNKNOWN-FL
+UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (36 '_extends'
+(DERIVED 17 0 0 0 DERIVED ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (37 '_def_init' (
+DERIVED 2 0 0 0 DERIVED ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ARTIFICIAL POINTER) PRIVATE) (38 '_copy'
+(UNKNOWN 0 39 0 0 UNKNOWN ()) () () () (UNKNOWN-FL UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUTINE ELEMENTAL PURE
+ALWAYS_EXPLICIT PROC_POINTER) PRIVATE (UNKNOWN-ACCESS OVERRIDABLE PASS
+SPECIFIC PPC '' 0)) (40 '_final' (UNKNOWN 0 0 0 0 UNKNOWN ()) () () () (
+UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ARTIFICIAL
+PROC_POINTER) PRIVATE (NULL (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 ()) (
+UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (41 '_deallocate' (
+UNKNOWN 0 0 0 0 UNKNOWN ()) () () () (PROCEDURE UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUTINE PROC_POINTER) PRIVATE (
+UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0))) UNKNOWN-ACCESS (
+UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0 0)
 42 'bar' 'foo' '' 1 ((PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN
 0 0 FUNCTION GENERIC) () (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () ()
 () 0 0)

The difference in xc_f03_lib_m feels like the first one, i.e. r15-4295.
If I try to bisect
module baz
  use, intrinsic :: iso_c_binding
  implicit none
  private
  public :: qux
  type :: qux
    private
    type(c_ptr) :: ptr = C_NULL_PTR
  end type qux
end module baz
which matches the xc_f03_lib_m more, that is the only commit which changes the
result.

So, my question is, if the module files are really incompatible between GCC 14
and 15, because of r15-4295 or all 3 commits, shouldn't we bump module.cc
(MOD_VERSION) macro?
Or change the r15-4295 commit such that it is compatible for the modules?

Reply via email to