[Bug ipa/94232] [10 Regression] Wrong code since r10-7273-gf3280e4c0c98e103603bafc466ea49651fe0b7f2

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 20 09:20:17 GMT 2020


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

--- Comment #9 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Martin Liška from comment #8)
> Looking at the fixup diff. Isn't it caused with:
> 
> # __y_329 = PHI <&MEM <void *> [(struct map *)&modeOptionMap + 8B](32),
> __y_328(33)>
> # __y_329 = PHI <&MEM <struct ModeOptionMap> [(void *)&modeOptionMap +
> 64B](32), __y_328(33)>

That should be the root cause. ipa_get_jf_ancestor_result returns:

good:
 <addr_expr 0x7ffff7061940
    type <pointer_type 0x7ffff76e0a80
        type <pointer_type 0x7ffff7868000 type <void_type 0x7ffff7861f18 void>
            public unsigned DI
            size <integer_cst 0x7ffff784cbb8 constant 64>
            unit-size <integer_cst 0x7ffff784cbd0 constant 8>
            align:64 warn_if_not_align:0 symtab:0 alias-set 4
structural-equality
            pointer_to_this <pointer_type 0x7ffff76e0a80>>
        unsigned DI size <integer_cst 0x7ffff784cbb8 64> unit-size <integer_cst
0x7ffff784cbd0 8>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality>
    constant
    arg:0 <mem_ref 0x7ffff6d47e60 type <pointer_type 0x7ffff7868000>

        arg:0 <addr_expr 0x7ffff7061360 type <pointer_type 0x7ffff7737c78>
            constant arg:0 <var_decl 0x7ffff7767480 modeOptionMap>>
        arg:1 <integer_cst 0x7ffff6d59708 constant 8>>>

bad:
 <addr_expr 0x7ffff70612e0
    type <pointer_type 0x7ffff7737c78
        type <record_type 0x7ffff7737bd0 ModeOptionMap addressable cxx-odr-p
BLK
            size <integer_cst 0x7ffff7a45f30 constant 384>
            unit-size <integer_cst 0x7ffff7a45828 constant 48>
            align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff7737b28
            attributes <tree_list 0x7ffff764ebe0
                purpose <identifier_node 0x7ffff764ebb8 abi_tag>
                value <tree_list 0x7ffff764eb90
                    value <string_cst 0x7ffff7a42820 type <array_type
0x7ffff76541f8>
                        readonly constant static "cxx11\000">>> fields
<field_decl 0x7ffff773bab0 _M_t> context <namespace_decl 0x7ffff76501c8 std>
            pointer_to_this <pointer_type 0x7ffff7737c78>>
        unsigned DI
        size <integer_cst 0x7ffff784cbb8 constant 64>
        unit-size <integer_cst 0x7ffff784cbd0 constant 8>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality>
    constant
    arg:0 <mem_ref 0x7ffff6d47578 type <record_type 0x7ffff7737bd0
ModeOptionMap>

        arg:0 <addr_expr 0x7ffff7054480 type <pointer_type 0x7ffff7737c78>
            constant arg:0 <var_decl 0x7ffff7767480 modeOptionMap>>
        arg:1 <integer_cst 0x7ffff6d596d8 constant 64>>>


More information about the Gcc-bugs mailing list