[Bug lto/92279] [10 Regression] ICE in error: non-trivial conversion in 'constructor' since r276416

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 11 09:34:00 GMT 2019


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

--- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> ---
> > context <record_type 0x7ffff76750a8 btConvexHullInternal>
> ...
> > context <record_type 0x7ffff7675738 btConvexHullInternal>>
> 
> But whoever built the constructor with two differnt types did someting
> wrong.
> 

I've probably got it:

$ $14 = void
(gdb) p debug_tree(lhs_type->type_common.context)
 <record_type 0x7ffff76750a8 btConvexHullInternal cxx-odr-p DI
    size <integer_cst 0x7ffff7864ba0 type <integer_type 0x7ffff78790a8
bitsizetype> constant 64>
    unit-size <integer_cst 0x7ffff7864bb8 type <integer_type 0x7ffff7879000
sizetype> constant 8>
    align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff76750a8
    fields <field_decl 0x7ffff7673ed8 vertexList
        type <pointer_type 0x7ffff7675150 type <record_type 0x7ffff76751f8
Vertex>
            unsigned DI size <integer_cst 0x7ffff7864ba0 64> unit-size
<integer_cst 0x7ffff7864bb8 8>
            align:64 warn_if_not_align:0 symtab:0 alias-set -1
structural-equality
            pointer_to_this <pointer_type 0x7ffff76867e0> reference_to_this
<reference_type 0x7ffff7688f18>>
        unsigned nonlocal DI ice9.ii:177:10 size <integer_cst 0x7ffff7864ba0
64> unit-size <integer_cst 0x7ffff7864bb8 8>
        align:64 warn_if_not_align:0 offset_align 128
        offset <integer_cst 0x7ffff7864bd0 constant 0>
        bit-offset <integer_cst 0x7ffff7864c18 constant 0> context <record_type
0x7ffff76750a8 btConvexHullInternal>> context <namespace_decl 0x7ffff7667130
VHACD>
    pointer_to_this <pointer_type 0x7ffff76a55e8>>

$ $13 = void
(gdb) p debug_tree(rhs1_type->type_common.context)
 <record_type 0x7ffff7675738 btConvexHullInternal cxx-odr-p DI
    size <integer_cst 0x7ffff7864ba0 type <integer_type 0x7ffff78790a8
bitsizetype> constant 64>
    unit-size <integer_cst 0x7ffff7864bb8 type <integer_type 0x7ffff7879000
sizetype> constant 8>
    align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff7675738
    fields <field_decl 0x7ffff76761c8 vertexList
        type <pointer_type 0x7ffff76757e0 type <record_type 0x7ffff7675888
Vertex>
            unsigned DI size <integer_cst 0x7ffff7864ba0 64> unit-size
<integer_cst 0x7ffff7864bb8 8>
            align:64 warn_if_not_align:0 symtab:0 alias-set -1
structural-equality>
        unsigned nonlocal DI ice5.ii:375:10 size <integer_cst 0x7ffff7864ba0
64> unit-size <integer_cst 0x7ffff7864bb8 8>
        align:64 warn_if_not_align:0 offset_align 128
        offset <integer_cst 0x7ffff7864bd0 constant 0>
        bit-offset <integer_cst 0x7ffff7864c18 constant 0> context <record_type
0x7ffff7675738 btConvexHullInternal>> context <translation_unit_decl
0x7ffff786e2d0 ice5.ii>>

So one btConvexHullInternal type lives in a namespace VHACD and second one in
any. So the types have different ODR names..


More information about the Gcc-bugs mailing list