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?