------- Comment #6 from rguenth at gcc dot gnu dot org 2010-07-09 21:00 ------- Hm, somehow we loose the float typed access:
<L8>: MEM[(struct SpecificAttrs *)&D.1966].mType = 0; t_6 = MEM[(const struct SpecificAttrs *)&D.1966].mType; t.0_7 = (int) t_6; switch (t.0_7) <default: <L1>, case 1: <L3>> <L3>: D.2156_8 = MEM[(const int &)&D.1966]; D.2158_9(D)->dummy_ = D.2156_8; D.2155_10 = MEM[(const float &)&D.1966]; MEM[(struct BarAttrs *)__v_2(D)].dummy_ = D.2155_10; but the access tree just has Access trees for D.1966 (UID: 1966): access { base = (1966)'D.1966', offset = 0, size = 32, expr = MEM[(const int &)&D.1966], type = const int, grp_write = 0, total_scalarization = 0, grp_read = 1, grp_hint = 1, grp_assignment_read = 1,grp_covered = 0, grp_unscalarizable_region = 0, grp_unscalarized_data = 0, grp_partial_lhs = 0, grp_to_be_replaced = 0, grp_maybe_modified = 0, grp_not_necessarilly_dereferenced = 0 access { base = (1966)'D.1966', offset = 32, size = 32, expr = MEM[(struct SpecificAttrs *)&D.1966].mType, type = Type, grp_write = 1, total_scalarization = 0, grp_read = 1, grp_hint = 0, grp_assignment_read = 1,grp_covered = 1, grp_unscalarizable_region = 0, grp_unscalarized_data = 0, grp_partial_lhs = 0, grp_to_be_replaced = 1, grp_maybe_modified = 0, grp_not_necessarilly_dereferenced = 0 Hm. Martin, maybe you are faster spotting the problem - the code is quite convoluted. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44891