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.