http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49572
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.4.7 |--- --- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-06-29 10:31:38 UTC --- > I suppose on 4.5 and higher FRE/PRE are strong enough to catch this. This > testcase has seen multiple adjustments in the past, so I suggest to not > worry and adjust its scan patterns (maybe analyzing what is different now). DOM1 used to declare the expressions generated by (gdb) p debug_gimple_stmt(stmt1) # VUSE <SMT.13_17(D)> { SMT.13 } D.1254_7 = D.1249_5->fld[1].rtmem; (gdb) p debug_gimple_stmt(stmt2) # VUSE <SMT.13_17(D)> { SMT.13 } D.1252_11 = D.1249_5->fld[1].rtmem; as equivalent. Now D.1254_7 and D.1252_11 have incompatible types: (gdb) p debug_tree(0xf7d814d0) <ssa_name 0xf7d814d0 type <pointer_type 0xf7d74c30 type <record_type 0xf7d74af8 mem_attrs type_0 SI size <integer_cst 0xf7ce66ac constant 32> unit size <integer_cst 0xf7ce6498 constant 4> align 32 symtab 0 alias set -1 canonical type 0xf7d749c0 fields <field_decl 0xf7d5eb80 foo> context <translation_unit_decl 0xf7d80208 D.1262> pointer_to_this <pointer_type 0xf7d74c30>> public unsigned SI size <integer_cst 0xf7ce66ac 32> unit size <integer_cst 0xf7ce6498 4> align 32 symtab 0 alias set -1 canonical type 0xf7d74c98> visited var <var_decl 0xf7d82160 D.1254>def_stmt D.1254_7 = D.1249_5->fld[1].rtmem; version 7 ptr-info 0xf7d83114 value 0xf7d7fc40> (gdb) p debug_tree(0xf7d815b0) <ssa_name 0xf7d815b0 type <pointer_type 0xf7cfc2d8 type <void_type 0xf7cfc270 void VOID align 8 symtab 0 alias set -1 canonical type 0xf7cfc270 pointer_to_this <pointer_type 0xf7cfc2d8>> public unsigned SI size <integer_cst 0xf7ce66ac constant 32> unit size <integer_cst 0xf7ce6498 constant 4> align 32 symtab 0 alias set -1 canonical type 0xf7cfc2d8 pointer_to_this <pointer_type 0xf7cff820>> visited var <var_decl 0xf7d820b0 D.1252>def_stmt D.1252_11 = D.1249_5->fld[1].rtmem; version 11 ptr-info 0xf7d83150> so the equivalence is now rejected.