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.