------- Comment #10 from aldot at gcc dot gnu dot org 2009-06-07 16:54 ------- 4.3.3 does not simplify it, 4.4.0 onward do.
for reference 4.3.3: Substituing values and folding statements Constants propagated: 0 Copies propagated: 0 Predicates folded: 0 ior (bD.1193) { <unnamed-unsigned:1> D.1200; unsigned charD.10 D.1199; signed charD.9 D.1198; signed charD.9 D.1197; <unnamed-unsigned:1> D.1196; # BLOCK 2 freq:10000 # PRED: ENTRY [100.0%] (fallthru,exec) # VUSE <SMT.4D.1206_7(D)> { SMT.4D.1206 } D.1196_2 = bD.1193_1(D)->bitD.1192; D.1197_3 = (signed charD.9) D.1196_2; D.1198_4 = D.1197_3 | 1; D.1199_5 = (unsigned charD.10) D.1198_4; D.1200_6 = (<unnamed-unsigned:1>) D.1199_5; # SMT.4D.1206_8 = VDEF <SMT.4D.1206_7(D)> { SMT.4D.1206 } bD.1193_1(D)->bitD.1192 = D.1200_6; return; # SUCC: EXIT [100.0%] } 4.4.0: Pass statistics: ---------------- Constants propagated: 1 Number of ASSERT_EXPR expressions inserted: 1 Statements deleted: 5 ior (struct B * bD.1247) { <unnamed-unsigned:1> D.1254; unsigned charD.10 D.1253; signed charD.9 D.1252; signed charD.9 D.1251; <unnamed-unsigned:1> D.1250; # BLOCK 2 freq:10000 # PRED: ENTRY [100.0%] (fallthru,exec) # SMT.10D.1266_8 = VDEF <SMT.10D.1266_7(D)> { SMT.10D.1266 } bD.1247_1(D)->bitD.1246 = 1; return; # SUCC: EXIT [100.0%] } -- aldot at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |4.3.3 Known to work| |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18031