https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77278
--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Some information about the type mismatch. The first mismatch about gfortran_st_write is lto1: warning: type of '_gfortran_st_write' does not match original declaration [-Wlto-type-mismatch] Breakpoint 1, warn_types_mismatch (t1=0x7ffff6a8d150, t2=0x7ffff6a39540, loc1=27996512, loc2=0) at ../../trunk/gcc/ipa-devirt.c:1051 1051 { (gdb) up #1 0x0000000000654b39 in lto_symtab_merge_decls_2 (diagnosed_p=false, first=<optimized out>) at ../../trunk/gcc/lto/lto-symtab.c:679 679 DECL_SOURCE_LOCATION (decl)); (gdb) down #0 warn_types_mismatch (t1=0x7ffff6a8d150, t2=0x7ffff6a39540, loc1=27996512, loc2=0) at ../../trunk/gcc/ipa-devirt.c:1051 1051 { (gdb) call debug_tree(t1) <function_type 0x7ffff6a8d150 type <void_type 0x7ffff6c50150 void VOID align 8 symtab 0 alias set -1 structural equality pointer_to_this <pointer_type 0x7ffff6c502a0>> QI size <integer_cst 0x7ffff6c37ca8 type <integer_type 0x7ffff6c3b2a0 bitsizetype> constant 8> unit size <integer_cst 0x7ffff6c37cc0 type <integer_type 0x7ffff6c3b1f8 sizetype> constant 1> align 8 symtab 0 alias set -1 structural equality arg-types <tree_list 0x7ffff6a873e8 value <pointer_type 0x7ffff6a86738 type <record_type 0x7ffff6a867e0 st_parameter_dt> unsigned DI size <integer_cst 0x7ffff6c37bb8 constant 64> unit size <integer_cst 0x7ffff6c37bd0 constant 8> align 64 symtab 0 alias set 1 structural equality> chain <tree_list 0x7ffff6c499b0 value <void_type 0x7ffff6c50150 void>>> pointer_to_this <pointer_type 0x7ffff6aa19d8>> (gdb) call debug_tree(t2) <function_type 0x7ffff6a39540 type <void_type 0x7ffff6c50150 void VOID align 8 symtab 0 alias set -1 structural equality pointer_to_this <pointer_type 0x7ffff6c502a0>> QI size <integer_cst 0x7ffff6c37ca8 type <integer_type 0x7ffff6c3b2a0 bitsizetype> constant 8> unit size <integer_cst 0x7ffff6c37cc0 type <integer_type 0x7ffff6c3b1f8 sizetype> constant 1> align 8 symtab 0 alias set -1 structural equality attributes <tree_list 0x7ffff6a3baf0 purpose <identifier_node 0x7ffff6c69af0 fn spec> value <tree_list 0x7ffff6a3bac8 value <string_cst 0x7ffff6e26dc8 constant ".w">>> arg-types <tree_list 0x7ffff6a3baa0 value <pointer_type 0x7ffff6a39498 type <record_type 0x7ffff6a393f0 __st_parameter_dt> unsigned DI size <integer_cst 0x7ffff6c37bb8 constant 64> unit size <integer_cst 0x7ffff6c37bd0 constant 8> align 64 symtab 0 alias set 6 structural equality> chain <tree_list 0x7ffff6c499b0 value <void_type 0x7ffff6c50150 void>>> pointer_to_this <pointer_type 0x7ffff6a44150>> which looks quite different, but I lack the tree-foo to really decypher this.