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.

Reply via email to