http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50838

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011-10-24
          Component|c                           |tree-optimization
         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org
                   |gnu.org                     |
   Target Milestone|---                         |4.7.0
            Summary|ice in refs_may_alias_p_1   |[4.7 Regression] ice in
                   |with -O3                    |refs_may_alias_p_1 with -O3
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-10-24 
08:27:27 UTC ---
(gdb) p r1
$1 = {ref = 0x2aaaae104000, base = 0x2aaaae104000, offset = 0, size = 64, 
  max_size = 64, ref_alias_set = -1, base_alias_set = -1}
(gdb) p r2
$2 = {ref = 0x2aaaae104030, base = 0x2aaaad787500, offset = 0, size = 64, 
  max_size = 64, ref_alias_set = -1, base_alias_set = -1}
(gdb) call debug_generic_expr (r2->base)
pseudofun_tab.pointer[169]
(gdb) call debug_generic_expr (r1->base)
*(const void * const *) &pseudodata_tab

the first base member is bollocks because the MEM_REF in it isn't
canonicalized:

 <mem_ref 0x2aaaae104030
    type <pointer_type 0x2aaaad447d20 object
        type <void_type 0x2aaaacea6bd0 void VOID
            align 8 symtab 0 alias set -1 canonical type 0x2aaaacea6bd0 context
<translation_unit_decl 0x2aaaada1b7e8 D.20438>
            pointer_to_this <pointer_type 0x2aaaacea6c78>>
        sizes-gimplified public unsigned DI
        size <integer_cst 0x2aaaace92ee0 constant 64>
        unit size <integer_cst 0x2aaaace92f00 constant 8>
        align 64 symtab 0 alias set -1 canonical type 0x2aaaacea6c78 context
<translation_unit_decl 0x2aaaada1b7e8 D.20438>
        pointer_to_this <pointer_type 0x2aaaacf21e70>>

    arg 0 <addr_expr 0x2aaaadca7ca8
        type <pointer_type 0x2aaaacf21e70 type <pointer_type 0x2aaaad447d20
object>
            sizes-gimplified public unsigned DI size <integer_cst
0x2aaaace92ee0 64> unit size <integer_cst 0x2aaaace92f00 8>
            align 64 symtab 0 alias set -1 canonical type 0x2aaaacebd498>
        constant
        arg 0 <array_ref 0x2aaaad787500 type <pointer_type 0x2aaaad447d20
object>

            arg 0 <component_ref 0x2aaaad84fea8 type <array_type
0x2aaaacfe55e8>
                arg 0 <var_decl 0x2aaaad627b40 pseudofun_tab> arg 1 <field_decl
0x2aaaad647000 pointer>
                ../src/spvw.d:2859:36>
            arg 1 <integer_cst 0x2aaaadd02320 constant 169>>>
    arg 1 <integer_cst 0x2aaaadca8420 type <pointer_type 0x2aaaacf21e70>
constant 0>>

Reducing, mine.

Reply via email to