[Bug libfortran/77278] Use LTO for libgfortran

tkoenig at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Aug 21 11:00:00 GMT 2016


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.


More information about the Gcc-bugs mailing list